Computer program products supporting integrated communication systems that exchange data and information between networks

ABSTRACT

Computer program products supporting integrated communication systems exchanging data and information between various networks and network formats through network interfaces. One computer program product executes in an external processor performing software switching for an operably connected communication system. Network interface connection information reflecting the result of the software switching decision is communicated by an external processor to the communication system for implementing the software switching decision therein between network interfaces according to some functional application of the received data. Another corresponding computer program product executes in a processor within a communication system for interacting with the operably connected external processor to implement the switching decision. Another computer program product executes in a processor within a communication system for translating the received data from an incoming format into a format suitable for software switched transmission from an incoming network interface directly to an outbound network interface of a communication system.

REFERENCE TO RELATED PATENT APPLICATIONS

The present patent application is a Continuation-in-Part (“CIP”) ofinternational patent application PCT/US02/33848 filed on Oct. 23, 2002,which is a Continuation of U.S. patent application Ser. No. 10/171,833filed on Jun. 14, 2002 and now issued as U.S. Pat. No. 6,625,169. Thepresent patent application claims the benefit of priority from, andincorporates by reference herein in their entirety, both of the abovereferenced related patent applications.

FIELD OF THE INVENTION

The present invention relates to software for networking,telecommunications, and communications technology, and more particularlyto software supporting integrated communication systems for exchangingdata and information between networks.

BACKGROUND OF THE INVENTION

The arts of networking and telecommunications originated well over acentury ago with the advent of traditional wired telecommunications.Initially, the technologies required were relatively straightforwardsince a single telephony network carried information in a simpletelegraph signaling data format. Later, a more elaborate telephonenetwork capable of carrying voice information in an analog data formatwas developed. Eventually information in new and more complex analogdata formats, such as facsimile and modem communication formats, wasconveyed over telecommunications networks. Soon information in even moreadvanced digital data formats, such as ISDN for example, was alsotransmitted across telephony networks. New telephony networks werecreated, while more sophisticated network formats for transmitting dataand information were developed. For instance, later the wirelesstelephony network joined the traditional wired or landline telephonynetwork. Similarly, wireless telephony protocols emerged to conveyinformation and data through wireless networks. Needless to say, thedevelopment of telecommunications created various new networks and newnetwork formats. Network infrastructure devices, such as landline andwireless telecom switches, were designed to interface with distincttelephony networks and to address various network formats, such as thenetwork protocols and network transports or media used to convey dataand information through telephony networks.

However, this was only the beginning of the proliferation of networksand network formats used for transmitting data and information. Advancesin data communications led to the emergence of Local Area Networks(LANs), such as Token Ring and Ethernet, that provided faster andimproved networking communications between increasingly intelligentnetwork terminal devices like PCs. New and increasingly diverse types ofnetworks, network formats, network protocols, and networktransports/media came to be deployed. Wide Area Networks (WANs),high-speed telephony networks (T1, T3, etc.), Metropolitan Area Networks(MANs), Asynchronous Transfer Mode (ATM) networks, fiber optic networks,broadband networks, and cable networks were examples of the new types ofnetworks that emerged. New network formats, some corresponding to thenewly developed networks were created. For example, Asymmetric DigitalSubscriber Line (ADSL) network format, ATM network cell format, and IPnetwork packet format are but a few of the many diverse network formatsin use today. The emergence of Internet Protocol (IP, TCP/IP, and thelike) networks and the Internet network further revolutionizednetworking and communications given how pervasively these sort ofnetworks have been implemented. Network equipment has been developed notonly to interface with a given network, but also to effectivelyinterconnect different types of networks. For example, the landline andwireless telephony networks have been interfaced effectively throughhybrid landline-wireless telephony switches. As a further example, thetelephony network and Internet network have been productively interfacedusing telecom/IP gateway servers. Further adding to the complexity, newtypes of information had to be conveyed through networks. Videoinformation joined existing types of information such as voiceinformation, facsimile information, and the like, being transmitted asanalog data and digital data traffic on modern networks. Today aplethora of different networks, distinct network formats, various typesof data and information, numerous protocols, and transports/media mustall be addressed by the networking and telecommunications arts.

Consequently, numerous types of networking and communications systemswere developed to address the need for interfacing between diversenetworks and network formats. Communication systems were designed oradapted to interface with each new type of network. Other communicationsystems were developed to bridge or route data and information betweendifferent types of networks. As a result, typical network topologies formanaging various and distinct networks have become extremely complex. Ithas become increasingly difficult to effectively interface diversecommunication systems from different manufacturers found at the edges ofdifferent networks. The large number of communication systems to bemanaged, and the many different types of communication systems to beinterfaced, make it difficult and inefficient to exchange data andinformation between networks and network formats. It would clearly beadvantageous to have a single networking solution that could replace theplethora of network devices needed to effectively utilize differentnetworks and different network formats. Further, a need exists for aflexible network solution that could seamlessly address different typesof data and information embodied in various networks and networkformats.

History indicates that additional networks and network formats may yetbe developed. Thus, it would be advantageous to have an opencommunications architecture that could readily support new networks andnetwork formats. In addition, there is a need for a single networkingsolution that can be controlled remotely in an open networkingenvironment. Addressing at least some of these needs would enable newapplications for networks, and could permit more productive use of themany networks and network formats encountered in modern communicationsand networking. Note that this Background of the Invention is providedmerely for explanatory purposes, and is not intended to limit the scopeof the present invention as defined by the attached claims in any way.

SUMMARY OF THE INVENTION

The present invention enables integrated communication systems thatexchange data and information between various networks, between variousnetwork formats, or both. More specifically, the present inventionprovides computer program products supporting the operation of a numberof integrated communication systems that provide data and informationexchanges between various networks and various network formats. As such,computer program product embodiments according to the present inventionseek to address at least some of the above needs while attempting todeliver one or more of the aforementioned advantages. Variousembodiments of the present invention also provide computer softwareprogram products for integrated communication systems that allowdifferent types of data and information to be intelligently controlled,translated, interconnected, and reconciled. As a result, the presentinvention makes it possible to reduce the number and types of networkequipment that may be required to exchange data and information, therebyenabling simplified network configurations and management. Integratedcommunication systems enabled by the present invention embody an openhardware and software architecture. Therefore, computer program productsfor these integrated communication systems can readily support,reconcile, and integrate a number of networks and network formats,whether existing or new. Yet further, computer software program productembodiments for these integrated communication systems exploit this openarchitecture by permitting external configuration and external controlof these integrated communication systems. Accordingly, the embodimentsof the present invention endeavor to effectively service the plethora ofnetworks, network formats, and types of data and information. Existingapplications for networks, as well as new applications for networks, maybe productively supported by embodiments of the present invention.Computer program products for these integrated communication systemsmake it possible to provide a single, coordinated, enterprise-widenetworking solution supporting the exchange of data and information ofvarious types between numerous networks and numerous network formats.

In one embodiment, the present invention provides a computer programproduct stored in computer readable media for execution in at least oneprocessor external to but operably connected to a communication system.The communication system exchanges data between networks through atleast two network interfaces within the communication system. Thiscomputer program product embodiment comprises at least five softwaremodules therein supporting its functions. A first software module isprovided for determining that a first network interface of thecommunication system is receiving data from a first network in a firstnetwork format. In addition, a second software module is provided fordetermining to which of at least one other network interface of thecommunication system the data received may be switched in support of atleast one functional application of the received data. Further, a thirdsoftware module is provided for software switching the data receivedfrom the first network interface to at least one other network interfaceof the communication system, according to at least one selectedfunctional application. A fourth software module is provided forcreating at least network interface connection information for thecommunication system reflecting the result of the software switchingdecision between the first network interface and at least one othernetwork interface of the communication system. Yet further, a fifthsoftware module is provided for transmitting at least the networkinterface connection information to the communication system to controltherein to which at least one other network interface the first networkinterface will transmit the incoming received data. As such, thecommunication system can implement therein software switching inaccordance with the selected functional application for the receiveddata. Various related embodiments of the computer program productsprovide additional software modules, additional functionality, andleverage the capabilities of one or more external processors operablyconnected to the communication system. Means plus function embodimentsrelated to the aforementioned embodiments are also provided.

Another embodiment of the present invention provides a computer programproduct stored in computer readable media for execution in at least oneprocessor within a communication system. As before the communicationsystem can exchange data between networks through at least two networkinterfaces. Further, the communication system is operably connected toat least one external processor. This computer program productembodiment comprises at least four software modules therein supportingits functions. A first software module is provided for determining thata first network interface of the communication system is receiving datafrom a first network in a first network format. In addition, a secondsoftware module is provided for transmitting to at least one externalprocessor through at least one interface of the communication systemthat the first network interface of the communication system isreceiving data. The software switching decision is performed by at leastone processor external to the communication system based at least on thetransmission from the second software module within the communicationsystem. A third software module is provided for receiving from at leastone external processor through at least one interface of thecommunication system the results of the software switching decisionexpressed as network interface connection information. The networkinterface connection information received indicates to which of at leastone other network interface of the communication system the datareceived by the first network interface will be switched within thecommunication system. Further, a fourth software module is provided forimplementing the software switching decision within the communicationsystem, by directing the data received from the first network interfaceto at least one other network interface of the communication system asinstructed by the processor external to the communication system. Assuch, software switching performed external to the communication systemcan be implemented within the communication system. A number of otherrelated embodiments of the computer program products provide additionalsoftware modules, additional functionality, and leverage thecapabilities of one or more external processors operably connected tothe communication system. As before, means plus function embodimentsrelated to the above embodiments are also provided by the presentinvention.

The present invention provides yet another computer program productembodiment supporting integrated communication systems. For thisembodiment, a computer program product stored in computer readable mediafor execution in at least one processor within a communication system isprovided. The communication system can exchange data between networksthrough at least two network interfaces therein. Further, thecommunication system is operably connected to at least one externalprocessor. This computer program product embodiment comprises at leastfour software modules therein supporting its functions. A first softwaremodule is provided for determining that a first network interface of thecommunication system is receiving data from a first network in a firstnetwork format. In addition, a second software module is provided foridentifying the first network format of incoming data received from thefirst network interface. Further, a third software module is providedfor receiving from at least one external processor through at least oneinterface of the communication system an indication that the receiveddata is to be transmitted to at least one other outbound networkinterface of the communication system. A fourth software module isprovided for translating the received data from the first network formatinto different format suitable for software switched transmission of thereceived data. The different format supports software switchedtransmission of the received data from the first network interfacedirectly to at least one other outbound network interface of thecommunication system. In addition, at least the fourth software moduleis responsive to the results of the software switching decision receivedfrom at least one external processor. Other embodiments provideadditional software modules, details about the translations, and thelike. As before, means plus function embodiments related to the aboveembodiments are also provided by the present invention.

Computer program product embodiments of the present invention supportintegrated communication systems that can support exchanges of data andinformation between networks. As such, the present invention can supportintegrated enterprise-wide network solutions for addressing varioustypes of data, various networks, and various network formats. Thepresent invention accordingly attempts to satisfy at least some of theabove stated needs while seeking to deliver at least some of theadvantages noted previously. In one sense, the present inventionsupports the operation of communication systems that use a commoninternal format, such as the different format suitable for softwareswitched transmission of the received data, to transparently exchangedata and information between network interfaces. In another sense, thepresent invention herein provides software supporting communicationsystems that can utilize external software switching to exchange dataand information between network interfaces under external control. Ineither or both senses, the present invention can simplify interfacingwith a variety of networks and network formats and exchanging data andinformation therebetween. The Summary of the Invention is providedherein as an overview of the invention and is not intended to limit thescope of the present invention as defined by the attached claims in anyway. Other aspects and features of the present invention will becomeapparent to those of ordinary skill in the art, upon review of thefollowing description of specific embodiments of the present inventionin conjunction with the accompanying figures.

BRIEF DESCRIPTION OF THE FIGURES

FIG. 1 is a diagram illustrating the complexities inherent in themulti-network, diverse data and information networking andcommunications environment encountered by those skilled in the art.

FIG. 2 is a block diagram illustrating a communication system fortransparent exchanges between networks, according to one embodiment ofthe present invention.

FIG. 3 is a diagram illustrating how the communication systems of thepresent invention attempt to address the complexity inherent in themulti-network, diverse data and information networking andcommunications environment.

FIG. 4 is a block diagram illustrating the OSI network layer model, theTCP/IP network layer model, and the SS/7 network layer model, asexamples of the diverse networks and network formats encountered in thenetworking and communications environment.

FIG. 5 is a block diagram illustrating a communication system fortransparent exchanges between networks, according to some embodiments ofthe present invention.

FIG. 6, including FIGS. 6(a) and 6(b), which are diagrams illustratingsome examples of possible network interface and processorconfigurations, according to various embodiments of the presentinvention.

FIG. 7, including FIGS. 7(a) and 7(b), which are diagrams illustratingformat translations, including decoding and encapsulation respectively,according to embodiments of the present invention.

FIG. 8, including FIGS. 8(a) and 8(b), which are diagrams illustratingan IP packet encapsulated in a PCI bus format and the transfer of anencapsulated IP packet over the PCI bus respectively, according to someembodiments of the present invention.

FIG. 9, including FIGS. 9(a) and 9(b), which are diagrams illustratinginverse format translations, including decapsulation and encodingrespectively, according to several embodiments of the present invention.

FIG. 10 is a diagram illustrating details regarding software switchedtransmission and software switched logical connections used forexchanging data, according to various embodiments of the presentinvention.

FIG. 11 is a block diagram illustrating a communication system fortransparent exchanges between networks, according to some embodiments ofthe present invention.

FIG. 12 is a block diagram illustrating the communication system andexternal processor environment for computer software program productssupporting exchanges of data between networks, according to someembodiments of the present invention.

FIG. 13 is a flow diagram illustrating a computer software programproduct for execution in an external processor operably connected to acommunication system, for supporting exchanges of data between networks,according to some embodiments of the present invention.

FIG. 14 is a flow diagram illustrating a computer software programproduct for execution in a processor within a communication system,operably connected to an external processor for supporting exchanges ofdata between networks, according to some embodiments of the presentinvention.

FIG. 15 is a flow diagram illustrating a computer software programproduct for execution in a processor within a communication system,operably connected to an external processor for supporting exchanges ofdata between networks, according to some embodiments of the presentinvention.

The Brief Description of the Figures above and the following DetailedDescription of the Invention are provided for illustrative anddescriptive purposes only, and neither is meant to limit the scope ofthe present invention as defined by the attached claims in any way.

DETAILED DESCRIPTION OF THE INVENTION AND BEST MODE

The present invention now will be described more fully hereinafter withreference to the accompanying illustrative figures, in which variousembodiments of the invention are shown. This invention may, however, beembodied in many different forms and should not be construed as limitedto the embodiments set forth herein; rather, these embodiments areprovided so that this disclosure of the present invention will bethorough and complete, and will fully convey the scope of the inventionto those skilled in the art. Although specific terms are employedherein, they are used in a generic and descriptive sense only and notfor purposes of limiting the scope of the present invention as definedby the attached claims in any way. Some terminology will be definedherein and used to describe forthcoming embodiments of the presentinvention, in order to teach the present invention to those skilled inthe art. Terms not described explicitly in this disclosure should beconstrued as they would be by those skilled in the art. Like numbersrefer to like elements throughout the detailed description of thepresent invention.

As described above, modern networking and telecommunications arecharacterized by an overabundance of different networks, distinctnetwork formats, numerous protocols, various types of transport media,and different types of data and information. As used herein for purposesof describing the present invention, data comprises analog data, digitaldata, both, or the like. Further, as used herein information comprises aset of related data having some collective significance or meaning. Forinstance, image or picture information may be represented as a group ofdigital data, such as a set of pixels, that define the size and color ofan image. Information may be embodied in one or more forms of data, suchas in analog data, in digital data, or in both forms of data. Forexample, audio or music information may be represented as analog data,digital data, or both forms in combination. For purposes of describingthe present invention, information and data are functionally equivalentand can be viewed as interchangeable. This is the case not only sincedata and information are related as noted, but also because theoperation of the integrated communication systems of the presentinvention can exchange and reconcile data and information in whateverform or forms may be required.

FIG. 1 illustrates some of the complexity inherent in the networking andcommunications environment faced by those skilled in the art. The Figureaccordingly shows at least some of the many different types of networks,representing the varied network formats, protocols, and transports/mediaembodied therein that must be addressed. For instance, WAN network 6,telephony network 11, high-speed telephony network 16, fiber network 21,cable network 26, 1P network 31, and the Internet network 36 are shown.Note that some of the networks shown could be viewed as composed of oneor more other networks. For instance, the telephony network may includeboth wired and wireless telephony networks. The Figure further showsISDN basic rate interface network 41, ISDN primary network 46, ADSLnetwork 51, ATM network 56, broadband network 61, MAN network 66, andLAN network 71 therein. Additionally, other networks 76, both existingand yet to be developed must be addressed in the environment. Typicallyat the edge of each network, some communication system provides aninterface between one or more types of networks. In the Figure, edge ofnetwork communication systems are shown for each network, numberedrespectively from 5 for a WAN network to 75 for the other networks. Forexample, a router may be used to interface a LAN network to a WANnetwork. Such router could serve as communication system 5 forinterfacing a WAN network 6 to a LAN network such as 71. Similarly,communication system 70 could be a router for interfacing a LAN network71 to WAN network 6, for example.

In some cases, edge of network communication systems may be used tointerface more than two networks. As shown in FIG. 1, the generally“unintegrated” ad hoc approach used for interfacing networks hasunfortunately resulted in the creation of a plethora of communicationsystems for interfacing the numerous networks and respective formatsfound in today's environment. Further complexity is encountered when itbecomes necessary to interconnect several communication systems togetherin order to interface the required networks. For example, tointerconnect telephony network 11 to cable network 26 and IP network 31it may be necessary to interface communication systems 10, 25, and 30together in some complex configuration, possibly even requiringadditional intervening communication systems. Since existingcommunication systems are designed to interface a relatively limited setof networks and their associated network formats or data formats, theproliferation of network edge communication systems continues toincrease. As discussed earlier and illustrated in FIG. 1, the currentenvironment is fraught with complexity given the large number and typesof communication systems being used to interface distinct networks,network formats, and types of data and information that must beaddressed.

Accordingly FIG. 1 illustrates that the networking and communicationsenvironment needs to consider and effectively manage different types ofinformation and forms of data. More specifically, the very reason forcreating networks such as those shown in the Figure is to convey dataand information. Thus, communication systems and their associatednetworks, like the examples shown in the Figure, may need to conveyanalog data 100, and digital data 105 for example. Additionally, thesesystems and networks may for example also need to convey audioinformation 110, image information 115, video information 120, and otherinformation 125. Some examples of other information could be computercommands, network or communication commands, computer executable files,computer parameter files, IP packets, other packet or cell formats, orthe like. Of course, as those skilled in the art will realize, there maybe additional examples of information or data. Conventionalcommunication systems may encounter problems processing different typesof information or different forms of data. One cause of these problemsis that existing communication systems do not process or conveydifferent forms of data and information in a common, efficient manner.This disadvantage further complicates network configurations and theresulting network environment because a greater number of communicationsystems are required to translate and convey diverse types ofinformation and forms of data through networks.

Fortunately, the present invention provides communication systems thatattempt to address the complexity found in today's networking andcommunication environment. The present invention thereby provides someembodiments of communication systems that can perform translationsbetween network formats and can transparently exchange data andinformation between networks. Other embodiments of communication systemsprovided by the present invention can be externally controlled anddirected to exchange data and information between networks. The exampleembodiment of the communication system in shown FIG. 2 could accordinglysupport transparent exchanges, or be externally controlled, or both.FIG. 2 accordingly illustrates one embodiment of a communication systemaccording to the present invention. In this schematic representation,communication system 200 interfaces directly with various networks, forexample network 80, network 83, network 87, and other networks as shownin the Figure. Of course, the communication system can interface withsignificantly more networks than the three examples shown in thisFigure. Communication system 200 is integrated since it can directlyconnect to and interface with a number of networks without requiringintervening network specific communication systems, such as those edgeof network communication systems shown in FIG. 1. Accordingly, thepresent invention can greatly reduce the complexity required tointerface with various networks.

Networks 80, 83, and 87 interfaced to communication system 200 in FIG. 2each could be any of the networks shown in FIG. 1. Alternatively,networks 80, 83, and 87 each could be other existing networks, or otheryet to be developed networks, such as other networks 76 shown in FIG. 1.Networks 80, 83, and 87 shown in this Figure could be different networkseach having their respective network formats, such as their respectiveprotocols and transport media. For example, network 80 could be atelephony network, while network 83 can be the Internet or an IPnetwork, and network 87 could be any other network. Alternatively, atleast one of networks 80, 83, and 87 could be a different type ofnetwork. Thus, two of the networks 80, 83, and 87 could be IP networkswhile one of the networks could be a telephony network, for example.Additionally, some or all of networks 80, 83, and 87 could be the sametype of network, with identical network formats. For instance, networks80, 83, and 87 could all be IP networks with matching network modellayers. Yet further, there could be differences in one or more networkmodel layers between networks 80, 83, and 87. For example, two of thenetworks 80, 83, and 87 could be IP networks running on coax cable whilethe other could be a wireless IP network. In addition, the communicationsystems of the present invention can interface with data and informationin the same format, or with data and information in different formats.For example, analog voice data received into the communication systemfrom one network could be transmitted to another network as the audioportion of digital video information. There are many possiblepermutations and combinations of types of networks, network formats, andformats of data and information that can be interfaced to thecommunication systems of the present invention, such as to theembodiment of communication system 200, for instance.

As shown in FIG. 2, network 80 can be connected to communication system200 through link 81. More specifically, network interface 201 ofcommunication system 200 is used to interface to network 80 through link81. Similarly, network 83 may be connected to network interface 204 ofthe communication system through link 84, and network 87 can beconnected to network interface 207 of the communication system throughlink 88 respectively. For the present invention, a link at a minimumcould comprise the physical media disposed between a network and anetwork interface of the communication system. For example, a link couldcomprise fiber, cable, wire, air, or any other media used to exchangedata between a network and a network interface. Alternatively, a linkmay be defined by the data link layer or by one or more other layers ofthe network layer model associated with the network attached to a givennetwork interface. Further, each network uses a given network format tocommunicate through the given link with an associated network interfaceof the communication system. For example, if network 80 was a telephonynetwork, a telephony format such as all or some part of the SS/7 networklayer model, could be used to communicate with the communication system.For instance, if network 83 was either the Internet or an IP network, aTCP/IP format such as all or some part of the TCP/IP network layermodel, could be used to communicate with the communication system. As afurther example, network 87 could use all or some part of the OSInetwork layer model as its network format to communicate with thecommunication system. In any case, each network can exchangeinformation, data, or the like, in a given network format with thecommunication system through a link connected to a corresponding networkinterface.

When a communication system according to some embodiments receives dataor information from a given network in a given network format through anetwork interface, it can translate the received data or informationfrom the received network format into a common transparent format. Thecommunication system can use this common transparent format forefficiently transporting data or information under software control asrequired within the communication system. This common transparent formatmay be used to efficiently switch or direct the data or informationreceived from one network interface transparently through thecommunication system to another network interface. A common transparentformat therefore allows data or information in any form and in anynetwork format to be processed and conveyed transparently through thecommunication system, more specifically between network interfaces. Oncedata or information is transmitted to an outbound network interface inthe common transparent format, the communication system can inversetranslate data or information from the common transparent format into anoutbound network format. Note that the received network format and theoutbound network format may be different or may be the same. Oncerepresented in the outbound network format, data or information canthereafter be transmitted through the outbound network interface to theattached network. Therefore, the communication system allows data orinformation in any form to be processed and conveyed transparentlythrough the communication system to support “end to end” exchanges ofdata and information between networks. As such, data and information inany form, and in various diverse network formats, can be processed andexchanged between networks in a common, efficient, and integrated mannerby the communication systems of the present invention.

A communication system according to some embodiments of the presentinvention can be externally controlled with respect to exchanging databetween networks. Connection information may be received from somenetwork interface or other external interface of the communicationsystem. For example, the connection information could compriseinformation indicating which network interfaces attached to respectivenetworks are to exchange data and information therebetween. Theconnection information can be used to establish externally controlleddata and information exchanges between networks, through theirrespective network interfaces. The source of the connection informationcan use information about the types of networks or formats of data andinformation attached to the communication system, to intelligentlyreconcile and control exchanges of data and information between thedesired networks. Accordingly data and information in any form, and invarious diverse network formats, can be reconciled and exchanged betweennetworks in an intelligent and integrated manner by the communicationsystems of the present invention.

FIG. 3 helps illustrate the advantages provided by the presentinvention. As before, the example embodiment of the communication systemin shown FIG. 3 could accordingly support transparent exchanges, or beexternally controlled, or both. This Figure shows how the communicationsystem 200 embodiment described in FIG. 2 attempts to simplify thecomplex networking and communications environment described in FIG. 1.It is noted that the numerous intervening edge of network communicationsystems required in FIG. 1, such as communication systems 5 through 75of FIG. 1, are no longer required in FIG. 3. Instead, a number ofdisparate edge of network communication system and other communicationsystems that may be required are replaced by a single integratedcommunication system 200. The single communication system includes anumber of network interfaces adapted for interfacing with many networks,such as for interfacing with at least the examples of networks shown inFIGS. 1 and 3. In addition, the integrated communication system candirectly interface with data in various forms and different types ofinformation as shown. The networking complexity of the environment inFIG. 3 as compared with FIG. 1 is reduced significantly because a singleintegrated communication system can transparently interface and manageexchanges of different forms of data and different types of informationbetween a number of diverse networks and diverse network formats.

Using FIG. 4, the capability of the computer software program productssupporting integrated communication systems of the present invention tosupport transparent exchanges of diverse data and diverse informationwhile interfacing with different networks and network formats may befurther explained. This Figure illustrates some examples of networklayer models, also known as network protocol stacks to those skilled inthe art. Network layer models were developed to support the transfer ofdata and information through one or more networks having a networkformat corresponding to a network layer model. Further, network layermodels are used to establish some consistency across implementations ofa given type of network. The network layer model mappings betweennetworks are of course approximate, since in practice the boundariesbetween network layers may not always be clear and precise. Also, theremay be different ways to represent some network layers and the functionsthey perform for a network. FIG. 4 illustrates the OSI network layermodel 150, the TCP/IP network layer model 160, and the SS/7 networklayer model 170. The OSI model 150 was created as the most generalnetwork layer model, which can serve as a reference model for comparisonpurposes. Accordingly, the OSI model is useful for explaining functionsrequired of networks, and how those functions map to network layers of aparticular type of network. The seven layers of the OSI model representexamples of the functions required in a typical network, regardless ofhow those functions are implemented in the network layer model of agiven network.

The OSI model shown in FIG. 4 comprises 7 layers: Physical 151, DataLink 152, Network 153, Transport 154, Session 155, Presentation 156, andApplication 157. Each layer may represent one or more functions providedby networks. In the OSI model, the Physical layer 151 is referred to aslayer 1, the lowest layer of the model. The Physical layer 151, alsocalled the media layer or network transport layer, provides themechanical, electrical, and functional facilities for physicallytransmitting bits between networked devices. In essence, the physicallayer transforms bits into electromagnetic signals to be physicallytransmitted between network devices through a particular transportmedia, such as through air or space, through a cable, fiber, wire, orthe like. The physical layer can define the electromagneticrepresentation of data as well as the media used to transmit databetween network devices. For example, analog data transmitted wirelessor digital data transmitted through coax could be distinguished by thecharacteristics of the physical layer. Layer 2, the Data Link layer 152,also known as the Protocol layer, controls transmissions made throughthe physical layer, while detecting and correcting transmission errorsto ensure error free, end-to-end transmissions between networkeddevices. Network layer 153, the third network layer, controls theoperation of the data link and physical layers while providing higherlevel services such as routing and congestion control for transmissions.The Transport layer 154, layer 4, creates and maintains the logicalend-to-end connection between network devices in a transparent manner sothe right data arrives at the destination network device in the rightorder. Note that the Transport layer is distinguished in function fromthe Physical layer that describes the physical media or “networktransport” as described above. The Session layer 155 shown as layer 5establishes, manages, and ends connections between software applicationsrunning in networked devices. Layer 6, the Presentation layer 156,translates data between the network format and the application format toensure transparency of data vertically through the protocol stack.Lastly, the seventh Application layer 157 supports application specificend user processes and software programs. For comparison purposes, thecorrespondence between the functions provided by the seven layers of theOSI reference model and the layers of the TCP/IP and SS/7 models isshown by overlaying OSI reference model layers (1) through (7) onto thelayers of the TCP/IP and SS/7 network models.

The TCP/IP network layer model 160 is shown accordingly in FIG. 4. TheSubnet or Link layer 161 corresponds approximately to layers 1 and 2 ofthe OSI reference model, the physical and data link layers respectively.Internet layer 163 corresponds to the network layer, the third layer. Inthis case, the Internet layer corresponds to the “IP” in TCP/IP, whichdescribes the lower layers of the network as being an IP network. Notethat as used herein, an IP network is not limited exclusively to theTCP/IP implementation and may include UDP/IP as well as otherimplementations of IP networks. Further, for purposes of the presentinvention an IP network could comprise the Internet or other IPnetworks. Transport layer 164 maps directly to the OSI transport layerin this example. However, Application layer 167 of the TCP/IP stackcorresponds roughly to OSI layers 5, 6, and 7, or to the session,presentation, and application layers respectively.

The SS/7 network layer model 170 also shown in FIG. 4 maps differentlyto the OSI reference model. Here, several layers do not providefunctions that map directly to discrete layers of the OSI model orTCP/IP model. Some layers, such as SCCP 173, may be described asfunctionally spanning layers 172 and 174 approximately, for example. TheSCCP layer appears to have some functions of the OSI network layer andthe OSI transport layer. Further, the TCAP, ISUP, and TUP layers 174operate similarly to OSI layers 6 and 5, as well as similar to parts ofOSI layers 7 and 4. As such, TCAP, ISUP, and TUP function to some extentlike at least parts of the OSI application, presentation, session, andtransport layers. It is worth noting that regardless of how the layersare organized for a given network layer model, each network model and inessence each network, must provide at least some of the seven networklayer functions defined in the OSI reference model. The network formatof a particular network is defined by the particular implementation ofthese network functions across the set of network layers used in aparticular network. Interfacing different networks may requiretranslations and inverse translations between network formats usingcomputer software program product embodiments provided by the presentinvention such that the associated network functions can be provided. Inany respect, some integrated communication systems can interfaceintelligently with networks by using computer software program productembodiments that provide the necessary translations required fortransparently exchanging data and information between networks.

FIG. 5 illustrates another embodiment of a communication systemaccording to the present invention. More particularly, the Figure showsa communication system 220 for exchanging data and information betweennetworks. As discussed, this embodiment of the communication system canbe viewed as an integrated system supporting transparent exchanges ofdata and information between networks. The communication systemcomprises a first network interface 223, a second network interface 226,a shared non-switched system bus 227, and a processor 228. Each networkinterface, such as 223 and 226, includes a physical interface mechanism230 a for connecting with an attached network; such as through links 222and 225 connecting to networks 221 and 224 respectively. Optionally,each network interface may include specialized interface hardware 230 asmay be required to interface with a given attached network. Thoseskilled in the art will recognize that the communication system maycomprise more than two network interfaces, as well as other types ofexternal interfaces. The first network interface 223 is connected to afirst network 221 through link 222 as shown, and exchanges data in afirst network format with the first network. Similarly, the secondnetwork interface 226 is connected to a second network 224 through link225 as shown, and exchanges data in a second network format with thesecond network. A link, such as 222 or 225, may at a minimum define orinclude the physical layer, such as the media or network transport,disposed between an interface of the communication system and anattached network or networked device. Optionally, a link may include ordefine both the physical layer and the data link layer of an attachednetwork. Alternatively, a link may include or define some number ofnetwork model layers or equivalents thereof for a given network attachedto an interface of the communication system. The shared non-switchedsystem bus 227 operably connects the first network interface 223 and thesecond network interface 226. In addition, the processor 228 is operablyconnected to at least one of the first network interface 223, the secondnetwork interface 226, and the shared non-switched system bus 227.

Processor 228 executes a suitable software program therein, such asthose provided by computer software program product embodiments of thepresent invention, suitable for translating between at least one networkformat, such as between at least one of the first network format and thesecond network format, and a third format. The processor executing asuitable software program, in conjunction with other facilities of thecommunication system such as network interfaces and the third format,helps to provide intelligent and transparent exchanges between networkswhile reconciling different forms of data, different types ofinformation, and different network formats. Data or information may bereceived into one network interface, such as into one of the firstnetwork interface 223 and the second network interface 226. The receiveddata or information can be translated from the network format asreceived from the one network into a third format. The third format canbe used to support software switched transmission of the data orinformation received from the one network interface to the other networkinterface. Software switched transmission of data may occur directlyfrom one network interface to the other network interface in someembodiments. For some such embodiments, direct transfers between networkinterfaces means that there are no intervening hardware switching orrouting devices between network interfaces. The other network interfacecould be any other network interface for which the received data orinformation was destined, such as the other of the first networkinterface 223 and the second network interface 226, for example.

Networks, such as the first network, second network, or any networkshown herein attached to any communication system of the presentinvention, could each be any known network, such as one of the examplesshown in FIG. 1, FIG. 2, FIG. 11, or other Figures. In addition, thefirst network and second network could be other networks not mentionedexplicitly in FIG. 1, including yet to be developed networks. Anynetwork can readily be accommodated and interfaced to the communicationsystem by using a suitably designed network interface. Often, a varietyof standardized parts and components are developed by the industry toconsistently interface with particular networks. These parts andcomponents can be used to implement a suitable network interface for thecommunication system. By using standard components to develop networkinterfaces, the open architecture aspects of the communication systemare enhanced. There are no known limitations that would prevent thecommunication system from interfacing to a particular network through anetwork interface. In addition, there are no known limitations thatcould prevent the communication system from having other externalinterfaces for interfacing with remote devices. As noted, the firstnetwork and the second network may be the same type of network, such astwo similar telephony networks or two similar IP networks. Of course,the first and second networks could be different in some respect; suchas different in at least one network model layer, so the communicationsystem could intelligently translate and transparently interconnect thesomewhat different networks. For example, the communication system canprovide an interface between different networks, such as between an IPnetwork and a telephony network, or between two IP networks operatingwith different data link layers, or different physical layers, or both.For example, the communication system can interface an IP network and atelephony network despite their different network formats, such as shownin FIG. 4. Additionally, through the communication system an IP networkimplemented via Token Ring running on cabled media can be interfaced toan IP network implemented via Ethernet running wireless, for example.

Accordingly, through its network interfaces the communication system cansupport any network format associated with a particular network. Forinstance, the communication system can interface with a first networkformat associated with a first network and can interface with a secondnetwork format associated with a second network. As described, a givennetwork format as used herein includes one or more of the network modellayers associated with a particular network. In one embodiment, thefirst network format may comprise at least one of a network protocol anda network transport or media associated with the first network, and thesecond network format may comprise at least one of a network protocoland a network transport or media associated with the second network. Assuch, the communication system can interface networks having somedifference in network protocol layers, network transport or medialayers, or in one or more other layers. Accordingly, different networksor different network formats would have differences in at least onenetwork model layer of interest. Similar networks or network formatswould not have any differences, at least in the network model layer orlayers of interest being compared. For example, differences in networkmodel layers of two or more networks could be significant if networklayers of interest that a processor accessed and compared haddifferences. Sometimes, differences in network layer models may not beimportant or significant. For example, a preset number of network layersfrom different networks may be encapsulated as payload and transmittedbetween different networks without requiring any comparisons ortranslations. For instance, layers 2 through 7 of TCP/IP networksoperating on different physical layers or media, such as on fiber andwireless, could be encapsulated and transmitted as payload across TCP/IPnetworks having different physical layers or media. As another example,a network interface of the communication system could decode an incomingpacket from an IP network; such as by removing the physical layer, thedata link layer, or both. The remainder of the IP packet could betransmitted as payload in the third format to some other networkinterface. To summarize, all network layers of a network layer modeldefine the type of network, while one or more network layers of interestto the communication system define the network format of the network.Optionally, the network format comprises at least the physical layer ofthe network or the data link layer of the network, or both the physicaland data link layers of a network. All types of physicalmedia/transports, data links/protocols, and other layers of diversenetwork layer models can be supported transparently by a communicationsystem that includes suitable network interfaces and network formattranslation facilities.

Next, we describe some hardware parts and components that may be used toimplement the subsystems comprising various communication systemsaccording to the present invention, such as those found in communicationsystems 200 in FIG. 2, 220 in FIG. 5, 240 in FIG. 11, other disclosedembodiments, or the like. For example, network interfaces and processorsused in a communication system are constituent subsystems thereof. As awhole, the communication system may be viewed as integrated with respectto the number of network devices or communication systems it replaces.In addition, the communication system may be viewed as integrated sinceit transparently interconnects different networks. However, it is worthnoting that the hardware parts and components used to implement thecommunication system may be embodied in logic devices and componentshaving various different levels of integrated circuit (IC) integration.The parts and components used in a system or subsystem could beseparate, discrete logic components, demonstrating a relatively lowlevel of IC integration. In this case for example, one or more ICs maycomprise a single subsystem of the communication system. For example, anetwork interface may comprise several integrated circuits andcomponents, such as resistors, capacitors, and one or more networkinterface ICs. A communication system or its subsystems may beimplemented with a higher level of IC integration, wherein one or moresubsystems of the system may be combined in a single IC. For example,the processor and network interface logic could be combined into onerelatively integrated IC. Still further, the communication system or itssubsystems can be implemented with relatively high levels of ICintegration. The entire communication system, or a significant portionof its subsystems, could be combined into a single IC given today'samazingly high levels of IC integration. In any case, the functions ofthe communication system and its constituent subsystems can beimplemented using hardware parts and components embodying variousdifferent levels of IC integration.

Accordingly, we further describe the processing resources of thecommunication system, such as processor 228 as shown in FIG. 5.Processor 228 is required to translate or convert incoming data from theincoming network format to the third format, and optionally to inversetranslate or convert data from the third format to the outgoing networkformat. In addition, a processor or programmable controller is alsorequired to perform software switched transmission of incoming datadirectly from one network interface to another network interface.Further, a processor or programmable controller is needed to establishsoftware switched logical connections between network interfaces. Ofcourse, those skilled in the art will appreciate that the processor orother programmable controller can be provided with a suitable softwareprogram to execute, thereby enabling the processor to accomplish anyrequired functions for the communication system. Further, each processoror programmable controller may have the necessary memory, disk,non-volatile storage, I/O, networking and communications peripherals,and other support necessary for it to accomplish the required functions.Additionally, a processor such as 228 may execute one or more computersoftware program product embodiments provided by the present inventionsuch that it can help support the operation of an integratedcommunication system. Processor 228 can be any commercially availableprocessor, microprocessor, embedded controller, digital signal processor(DSP), some other programmable controller, or a hybrid processorcontaining DSP capability and more general purpose microprocessor orembedded controller capability.

A single processor, such as processor 228, may be sufficient to executea computer software program product embodiment for performing all therequired format translations and software switched exchanges of data forthe communication system. The communication system can operate with asingle processor assuming it is provided with a suitable softwareprogram or programs, sufficiently rapid processing cycles, memory,peripherals, and the like, to support the functions to be provided. Insome embodiments, more than one processor may be provided to supportformat translations and software switched transmissions. For example, ageneral purpose microprocessor or embedded controller may be programmedand assigned to perform software switched transmissions of data, while aDSP or DSP equipped hybrid processor can be programmed and assigned toperform format translations. As those skilled in the art willappreciate, if multiple processors are used, they may be statically ordynamically assigned to perform various functions required in thecommunication system. In FIG. 5, a second processor 229, shown as adotted line box, could be an additional processor optionally providingmultiprocessing capability as discussed. Processor 229 is defined thesame as processor 228 above. While not shown for purposes of improvingreadability of the Figure, the second processor 229 could also beconnected to at least one of the first network interface, the secondnetwork interface, and the shared non-switched system bus, similarly tothe connections shown for processor 228. In addition, processor 229 andprocessor 228 could be operably connected to each other as required.Although not absolutely required, it may simplify the design and improveoverall communication system performance to dedicate processors to theseparate and distinct functions to be performed, either statically ordynamically.

Further, processor 228 may be operably connected to at least one of thefirst network interface 223, the second network interface 226, and theshared non-switched system bus 227. These options for interconnectingthe processor 228 to the aforementioned are shown by the dottedconnection lines in FIG. 5. Optionally, and as will be described, insome configurations the processor may be contained within a networkinterface and operably connected to that network interface or to one ormore network interfaces. Further, the processor could be connectedeither directly or indirectly to at least one network interface. Forinstance, the processor could be connected to at least one networkinterface indirectly through the shared non-switched system bus, inorder to perform the required format translations. The sharednon-switched system bus 227 operably connects the first networkinterface 223 and the second network interface 226. Translations ofincoming data received by one network interface, from an incomingnetwork format to the third format, may be required in some embodimentsfor software switched transmission from one network interface throughthe communication system to another network interface. Translations fromthe third format to an outgoing network format may be required in someembodiments for transmission of data from the communication system to anoutgoing network, through an outgoing network interface. The processorcan also be connected to the shared non-switched system bus, the firstnetwork interface, or the second network interface as may be required toperform software switched transmission of data through the communicationsystem between network interfaces. As used herein, a connection and anoperable connection may include but are not limited to one or more of adirect electrical connection, a connection through some bustransceivers, a connection through some controlled bus interface logic,or the like, as may be required to properly interconnect hardware in thecommunication system or to interconnect the communication system to theexternal world.

Network interfaces, such as example network interfaces 201, 204, and 207shown in FIG. 2 and network interfaces 223 and 226 shown in variousFigures such as FIGS. 5, 6, 10, and 11 will be described further. Thedescription of network interfaces applies equally to other externalinterfaces of the communication system unless differences are described.It should be noted that network interfaces can be connected together insome way to permit data to be exchanged therebetween. There are manyways to interconnect network interfaces. In some embodiments, networkinterfaces can be connected through a shared non-switched system bus.Thus, a network interface can have some bus interface capability, eitherstand-alone or through some optional external bus interface logic orsupport module. As such, the network interface can exchange data withthe shared non-switched system bus and with other network interfaces.Further, for some embodiments a network interface is capable ofexchanging data bi-directionally in an interleaved manner with anothernetwork interface to improve the performance of the communicationsystem. From a hardware and software perspective, each network interfacemay comprise a single port customized for interfacing with a givennetwork in a given network format. At a minimum, a network interfaceshould support interfacing with at least part of the physical layer of anetwork layer model, such as part of layer 1 of the OSI network layermodel. The network interface may also include support for additionalnetwork models layers, such as the data link or protocol layer. Further,the network interface may optionally support network layer 3 typefunctions or other higher level networking layer functions.

At least part of the networking support function required in a networkinterface may be provided by some specialized interface hardware forinterfacing with an attached network. A network interface requires at aminimum some specialized interface hardware, such as a physicalinterface mechanism, for physically connecting to the attached network.Some specialized interface hardware in addition to the physicalinterface mechanism for supporting the attached network is optional andmay be needed depending on the type of attached network. For example, anetwork interface might only comprise a physical interface mechanism,such as an RJ-45 connector for physically attaching to the network. Noother specialized interface hardware may be required. A processor couldaccordingly connect directly to the network through the physicalinterface mechanism of the network interface and interact with thenetwork without requiring additional intervening specialized interfacehardware. In some cases, interfacing to an attached network may requirea network interface having some additional specialized interfacehardware or hardware components in addition to the physical interfacemechanism. All or part of a network interface, including the specializedinterface hardware, physical interface mechanism, and optional hardwarecomponents, may be operably connected to other network interfaces, oneor more processors, or the shared non-switched system bus as may berequired. The specialized interface hardware 230, as shown in FIG. 5 forexample, is connected to a network such as 221 though a physicalinterface mechanism such as 230 a which is connected to a link such as222. The specialized interface hardware should support at least part ofthe physical layer as needed, such that data can be exchanged properlywith the attached network. Specialized interface hardware 230 shouldinclude some physical interface mechanism 230 a for interconnecting anetwork interface to a link, such as an RS-232 D-shell connector, afiber optic connector, RJ45 connector, Token Ring connector, coaxconnector, or the like. A physical interface mechanism could comprise anantenna, other mechanism for exchanging data with a wireless link, orthe like. Further, the specialized interface hardware 230 might includesome additional physical layer support functions. For example, thespecialized interface hardware of a network interface connected to atelephony network could comprise hardware components to interface withthe Tip and Ring wires of a POTS interface, such as resistors,capacitors, optoisolators, or the like. For instance, at least part ofthe specialized interface hardware could include a fiber optictransceiver used to interface the communication system to a fiber-basednetwork. The specialized interface hardware could include a wirelesstransmitter, receiver, transceiver, or the like. Other components couldbe included in, or operably connected to, the network interface, thespecialized interface hardware, or both.

As noted, the network interface may further contain support for datalink or higher layer networking functions. Data link or protocol layerfunctions could be performed by a device such as state machine logic, anASIC, integrated controller, some programmable interface controller orother programmable hardware device. For example, a network interfacecould contain a processor such as 228 executing therein a suitablecomputer software program embodiment according to the present invention.The device or devices supporting data link layer functions could bewithin or connected to the network interface, and may be connected tothe specialized interface hardware as needed. Support for data linklayer functions could optionally be provided by the specializedinterface hardware itself, such as by incorporating an Ethernet protocolmodule in the specialized interface hardware, for example. Higher levelnetworking functions beyond data link layer support functions could bealso provided by the specialized interface hardware, such as byincluding a more sophisticated Ethernet controller therein, for example.Those skilled in the art will appreciate that there are manypermutations and combinations possible for implementing the functionsrequired of a network interface, since the above discussion is intendedto be illustrative and not all inclusive. Further, skilled artisans willunderstand that many commercially available devices can function asnetwork interfaces, specialized interface hardware, physical interfacemechanisms, and the like, to support interfacing with many networks andformats.

A network interface or other external interface of the communicationsystem can be memory mapped and assigned a range of unique memoryaddresses associated with the interface. In some implementations, thespecialized interface hardware or devices supporting the data link layerand higher layer networking functions may be memory mapped. Memorymapping interfaces can help support data exchanges performed through thecommunication system. Software switched transmission of data, otherprogrammed transfers of data or parameters, and establishing softwareswitched logical connections between network interfaces are among thecommunication system functions that can be supported by memory mappednetwork and external interfaces. Memory mapping interfaces may alsoallow software customization and control of network transmission/receiveparameters, network interface controls or the like, for the network orexternal interface. Memory mapped access to network interfaces or otherexternal interfaces also supports autonomous and efficient transfers ofdata between interfaces. Data transfers and exchanges setup by aprocessor between interfaces of a communication system can occurindependently of further processor or user intervention.

Many relative configurations are possible that include the processor 228and at least one network interface, for example like first networkinterface 223 or second network interface 226 as shown in FIG. 5. Forexample, processor 228 or some programmable interface controller couldbe external to but operably connected to a network interface.Alternatively, a processor or the like could be contained within anetwork interface. Various other configurations are possible given thedescriptions of the processor and network interfaces provided herein.Similarly, different computer software program product embodiments ofthe present invention can be executed in a single processor or can bedistributed among different processors for execution. As noted, anetwork interface could at a minimum provide at least some physicallayer support, although data link and higher level functions may beprovided. Given the variable level of function that may be provided by anetwork interface, the functions that a processor can provide, and theparticular implementation selected, a very high number of configurationsare possible. FIG. 5 illustrates a first possible configuration in whicha processor, such as processor 228 or processor 229, is separate frombut may be operably connected to one or more network interfaces.Although not shown explicitly, first network interface 223 or secondnetwork interface 226 as shown in FIG. 5 and other Figures may alsoinclude optional bus interface logic 231 as shown in FIGS. 6(a) and 6(b)for interfacing with the shared non-switched system bus. FIG. 6(a) showsa second possible configuration of a network interface, such as in firstnetwork interface 223 shown as an example. In this configuration,processor 228 is integrated inside first network interface 223, and isconnected to specialized interface hardware 230. Here in thisconfiguration, the processor may also be connected directly to theshared non-switched system bus 227, or indirectly through optional businterface logic 231.

A third possible configuration somewhat similar to the second exampleconfiguration is shown in FIG. 6(b). A network interface, such as firstnetwork interface 223 for example, may contain an integrated interfacecontroller 232 integrated inside, instead of processor 228 as before.The integrated interface controller may contain state machines, suitablyprogrammed RISC processors, controllers, or the like, specially adaptedto interface with various network layer models of one or more networks.The integrated interface controller could execute one or more computersoftware program product embodiments of the present invention. Inaddition, the integrated interface controller 232 may also include anintegrated bus interface capability, such as provided by optional businterface logic 231. Among the examples of these integrated interfacecontroller devices are the Motorola QUICC family, LSI logic ATMprocessors, AMCC devices, or similar devices from a number of vendorsdesigned to interface with a variety of different networks and networklayer models. Further, the integrated interface controller 232 shown inthis FIG. 6(b) may be operably connected to the specialized interfacehardware 230, to the physical interface mechanism 230 a, directly to theshared non-switched system bus 227, or indirectly to 227 throughoptional bus interface logic 231, similarly to the operable connectionsof processor 228 shown in FIG. 6(a). For this third possibleconfiguration, processor 228 can be external to, but operably connectedto, the first network interface 223 as per the first exampleconfiguration shown in FIG. 5.

However, a fourth alternate configuration may be created by making somerelatively minor modifications to FIG. 6(b), such as by integratingprocessor 228 within first network interface 223 as shown in FIG. 6(b).This fourth configuration is also illustrated in the Figure by usingdotted lines to show processor 228 and its operable connections. Severalpossible operable connections are shown between processor 228,integrated interface controller 232, specialized interface hardware 230,the shared non-switched system bus 227, and optional bus interface logic231. These operable connections are described similarly to those shownin FIG. 6(a). Optionally, the processor could also be operably connectedto specialized interface hardware 230 as in FIG. 6(a). Persons skilledin the art will understand that other configurations are possible withinthe scope of the present invention. Also, the components or parts usedfor implementing each network interface and network interfaceconfiguration are preferably commercially available and previouslydeveloped for interfacing with the required layers of the networks to beinterfaced. Packaging and IC integration level options provide an evenricher set of possible configurations for implementing networkinterfaces. In any configuration, the network interface could beimplemented and packaged in various ways. For example, a networkinterface could be implemented as part of a single printed circuit boardincorporating an entire communication system. In another case, a networkinterface could be packaged within a separate printed circuit board oradapter for insertion into the communication system. Accordingly, thenetwork interfaces of a communication system could be configured andreconfigured as required. As those of skill in the art will appreciate,there are numerous other examples of possible network interfaceconfigurations. The discussion above regarding network interfacesapplies also to other external interfaces of the communication system.

Next, the shared non-switched system bus 227 as shown in FIGS. 5, 6(a),and 6(b), the shared non-switched system bus 257 shown in FIG. 10, orthe like, will be described. Alternatively, the shared non-switchedsystem bus could be provided as a separate hardware path used tointerconnect the required network interfaces, external interfaces,processors, and other hardware devices. The shared non-switched systembus could alternatively be some other electrical, optical, or wirelessconnection between interfaces of the communication system. Optionally,the shared non-switched system bus could be implemented outside thecommunication system through some cable or other interconnectionmechanism between network interfaces and the like. Although the sharednon-switched system bus could be a serial bus, for performance and costreasons the shared non-switched system bus may be implemented as aparallel bus in some embodiments of the present invention. The sharednon-switched system bus can be any common party-line bus suitable forconnecting network interfaces, processors, subsystems, and otherhardware devices as previously described together. Accordingly, theshared non-switched system bus connects portions of the communicationsystem together without any type of intervening hardware switchingdevice, such as a hardware switch, bridge, router, multiplexer, gateway,or the like. The communication system of the present invention canperform software controlled and software switched transmission of data,and does not require hardware switching devices for its sharednon-switched system bus. Further, the communication system may usesoftware commands to establish a software switched logical connectionbetween network interfaces for transferring data between connectednetwork interfaces, preferably but not necessarily through the sharednon-switched system bus. To support the open architecture of thecommunication system, the shared non-switched system bus may be anynon-switched industry standard bus. For example, the shared non-switchedbus could be implemented as a PCI bus, Compact PCI bus, ISA bus, VMEbus, VME64 bus, or the like. In some embodiments, the sharednon-switched system bus could be an industry standard non-switched PCIor Compact PCI bus. Those skilled in the art are referred to industrystandard PCI and Compact PCI specifications available from the PICMG(PCI Industrial Computers Manufacturing Group), such as PICMG 1.0, PICMG2.0, and several others for specific electrical signal, pin outs, buscycle, and timing details of these well known PCI busses.

The communication system may include the capability to transfer databi-directionally, such as by providing full duplex data transfersbetween network interfaces, through the shared non-switched system busor through some other connection between interfaces as described. Insome embodiments as noted, the communication system can use the PCI busto connect network interfaces and permit data exchanges therebetween.However, for industry standard PCI busses, transfers are inherentlyunidirectional, such as from Master to Slave or from Source to Target.However, some PCI bus interface chip vendors, such as AMCC for example,have sold commercially available PCI bus interface modules that can beprogrammed to permit interleaved bi-directional data transfers throughthe PCI bus. Instead, an ASIC could be custom designed, or an FPGA couldbe customized, to provide PCI bus interface modules which are alsocapable of interleaved bi-directional data transfers. For example, byusing PCI bus interface modules such as these, Master to Source andSource to Master PCI bus transfers can be established across a standardPCI or Compact PCI bus for exchanging data bi-directionally betweennetwork interfaces. Alternatively, the shared non-switched system buscould also be any of a number of other suitable busses whether or notmentioned explicitly herein capable of supporting data transfers betweeninterfaces and having relatively high bandwidth for data traffic of thecommunication system. In addition, the shared non-switched system buscould be integrated within the communication system, such as being aninternal system bus.

Next, details associated with the third format used in some embodimentsfor transparent software switched transmission of data between networkinterfaces through the communication system will be discussed. The thirdformat may be a format suitable for software switched transmission ofthe data received by a communication system from a first networkinterface to at least one other outbound network interface of thecommunication system. Data in the third format may be exchangedtransparently between network interfaces through the shared non-switchedsystem bus or the like as described. Data or information received intoone of the network interfaces, such as into one of the first networkinterface and the second network interface, can be translated from thenetwork format as it was received from the one network into a thirdformat. For example, data received into first network interface 223 orsecond network interface 226 in FIG. 5 can be translated from therespective incoming network format into the third format. Translationsof data received into a receiving network interface can be performed bythe processor, the receiving network interface, or both, depending onthe particular implementation. Regardless of where performed, aprocessor may execute one or more computer software program productembodiments of the present invention to translate the data. The thirdformat may be used as a common format suitable for transparent softwareswitched transmission directly within the communication system from theone network interface to the other network interface. Optionally, thethird format may also be used as a common format for data transfersbetween network interfaces through a software switched logicalconnection established between network interfaces. Accordingly, thethird format can serve as a common format used to exchange datatransparently through the communication system between networkinterfaces. The third format may be common no matter what types ofnetworks are being interfaced by the communication system. Further, thethird format could be the same, regardless of network formats and thetypes of data/information involved. As such, the third format can beused to transparently support exchanges of data between networkinterfaces. Optionally, data in the suitable third format transmitted toa network interface can be inversely translated from the suitabletransparent third format used for transmission between interfaces withinthe communication system into the other network format, for outboundtransmission through the network interface to the other network. Notethat the translation and inverse translation processes may or may not besymmetrical, depending on the networks involved. The processes aresymmetrical only if the incoming network format and outgoing networkformat of data exchanged between network interfaces are the same.Otherwise, the inverse translation process will embody data in anoutgoing network format different from the incoming network format. Itis the asymmetrical nature of translations to and from the third formatthat enables the communication system to transparently reconciledifferent networks, different network formats, and different types ofdata and information.

Other aspects of translation, inverse translations, and how they areperformed will be further explained. As noted, translation between anetwork format and the third format may require a network interface, aprocessor, or both, depending on the implementation and particularnetwork involved. The same is true for inverse translation between thethird format and a network format. For example, processor 228, firstnetwork interface 223 or second network interface 226, or somecombination thereof as shown in FIG. 5 may be required. Further asnoted, at least one processor may execute therein a computer softwareprogram product embodiment of the present invention for translatingdata, inversely translating data, or both. In one embodiment, theprocessor may be operably connected to both network interfaces, such asto both the first and second network interfaces, so that the processorcan perform all required data translations. In this embodiment, theprocessor can translate data between the one network format as it wasreceived and the third format, and the processor can also inversetranslate data between the third format and the other network format fortransmission to the other network. In ann embodiment, the networkinterface receiving data can contain a processor therein so that thereceiving network interface can translate data from the network formatas received into the third format. Translating received data from anincoming network format to the third format requires both decoding andencapsulation processing. According to other embodiments that comprisemultiple processors, one or more processors may be assigned eitherstatically or dynamically to perform data translations or inversetranslations. As described, the communication systems of the presentinvention include network interfaces for exchanging data and interfacingwith given networks. These network interfaces can interface as requiredwith a particular network format, including some or all of the networklayers associated with a given network.

The design of the communication system, including the network interfacesand any required processing resources, can accommodate interfacing withvarious networks and network formats as noted in this disclosure. Theprogrammable nature of the communication system is leveraged to flexiblyinterface with a number of networks, translate data from an incomingnetwork format to a common transparent format, and inversely translatedata in a common transparent format to an outgoing network format.Supporting computer software program product embodiments executing inone or more processors support the various functions of thecommunication systems. Software programs and data structures may beloaded into some processing resource supporting a network interface,such as a processor, integrated interface controller, other programmabledevice, or the like as described. As such, support for incoming networkformats, outgoing network formats, and the common transparent format canbe readily provided through network interfaces by a processing resource.Further, the processing resource can also perform the necessarytranslations between network formats and the common transparent format.In some cases, software can be used to customize the data link layer,one or more higher network layers, or both, associated with a networkformat supported at a network interface. This customization can occur atdiscrete times on demand or dynamically to modify the function of anetwork interface, such as by modifying the software executed by aprocessing resource or the parameters processed by a processingresource. As such, network interfaces can be customized to supportvarious networks and network formats. Several different networks anddifferent network formats can be supported through a network interface,even when attached to a given, fixed, physical interface layer. Forexample, assume a network interface of the communication system isattached to a normal POTS telephone line. By customizing the software orparameters of a processing resource supporting a network interface,various network formats such as analog voice, V.90 modem, DSL, or otherscan be supported through a normal POTS telephone line. Further, variousprotocol stacks can be supported by customizing the software orparameters used by a processing resources supporting a networkinterface. For example, commercially available protocol stacks can beused to allow a processing resource to support that protocol at a givennetwork interface. Computer software program product embodiments of thepresent invention can be used with processors to support a number ofcommunication system functions as described.

Through a corresponding network interface, the communication systems ofthe present invention can decode or extract data received in a givennetwork format from a given network. For some embodiments, decoding ispart of the translation process applied to incoming received data. Thedecoding function can be applied to one or more of the network layersinherent in the incoming network format. In some cases, the decoding ofincoming data may comprise simply extracting data from a given incomingnetwork format. For example, decoding could comprise extracting analogvoice data from the physical layer of an incoming call on a standardPOTS telephone line. For some embodiments, data received in a networkformat may be decoded or extracted from its incoming physical layer anddata link layer, so that decoded data can be represented by the contentsof network layers 3 through 7 inclusive. For example, decoding orextracting incoming data from an Ethernet link running on copper wirecould imply decoding physical layer 1 and data link layer 2. Thus,decoded data could comprise the Internet layer through the applicationlayers of the TCP/IP network layer model shown in FIG. 4, for instance.Additionally, all network layers above the physical layer, such aslayers 2 through 7 inclusive, could represent decoded data from anincoming network. For example, the protocol through application layersfrom a UDP/IP network could be extracted from the physical layer of anincoming fiber optic link. Depending on the network format and thenumber and type of network layers to decode, the decoding may beperformed by the network interface alone, processor alone, or by both.For example, a network interface alone may be able to decode layers 1and 2 of an Ethernet format. A processor, such as a DSP or the like,could be required to time sample a telephony network format, eitheralone or in conjunction with some network interface hardware. Once thedesired number of layers of incoming data in a first network format aredecoded, the communication system can further translate incoming datainto a common, transparent format. Some processing resources andsupporting programming or “intelligence” is required to complete thetranslation of the decoded received data into the third format.

The third format is a transparent and common format that may be used toefficiently direct software switched data between network interfacesthrough the communication system. Accordingly, the third format can bean encapsulated format, such as an encapsulated hardware or softwareformat, suitable for directing the data between interfaces, such asbetween network interfaces, external interfaces, or both. Optionally,the third format may include addressing information to identify only thedestination or outgoing network interface. Alternatively, the thirdformat may include addressing information to uniquely identify eachnetwork interface involved in exchanging data, whether uni-directionallyor bi-directionally. As such, computer software program productembodiments executed by a processor of the communication system candetermine the source network interface and destination networkinterface, and establish a software switched exchange of data betweennetwork interfaces using the third format. Exchanges of data in thesuitable third format can occur between network interfaces whether ornot a software switched logical connection is established betweennetwork interfaces. An encapsulated format is well suited to serve asthe third format. An encapsulated format, such as a hardwareencapsulated format, can transparently carry decoded data betweennetwork interfaces, regardless of the incoming network format, outgoingnetwork format, or type of data or information being exchanged. As such,decoded data could be encapsulated or packaged in a transparent thirdformat to transport it through the communication system in a commonmanner. In one embodiment, data received into one network interface canbe transmitted in the third format to another network interface throughthe shared non-switched system bus. For an embodiment, the third formatmay comprise an IP packet formatted from data received and decoded fromany incoming network format, whether or not the incoming network formathas an IP network format. For instance, voice data from an incoming POTStelephone network call could be decoded, digitized, and formatted asdata in an IP packet representation format. For a related embodiment,the IP packet may be encapsulated in a hardware encapsulated formatsuitable for transmission through a shared non-switched system bus, suchas a PCI bus, for example. As a further illustration, the POTS voicedata payload in an IP packet format could be transmitted across the PCIbus in a hardware encapsulated format to another network interface.

FIG. 7 shows an example useful for explaining the decoding andencapsulation subprocesses used to translate between network formats andthe third format. Similarly to decoding, the encapsulation subprocessmay be a part of the translations performed on incoming data received insome computer software program product embodiments. As noted, aprocessor executing a computer software program product embodiment ofthe present invention may be used to support translation, inversetranslation, both, or other functions. Incoming data must first bedecoded from the incoming network format, and thereafter encapsulatedinto the third format to complete the translation process. In FIG. 7(a),an example of decoding incoming data is shown. Data 301 could be anyform of data being received by a network interface in any incomingnetwork format. For this example, the data 301 is shown in the OSInetwork model format. Data is decoded as shown by 305, which representsdecoding as described. In this case, layers 3 through 7 are removed bydecoding, and the decoded data 302 is represented as extracted fromphysical layer L1 and data link layer L2. L1 and L2 are collectivelydenoted as 303, and are removed by the network interface, processor, orboth as explained above. FIG. 7(b) shows an example of encapsulatingdecoded data, in a continuation of the processing. Optionally, decodeddata can be further processed or translated prior to encapsulation, suchas to represent decoded data in a format used for transparent exchangesof data between network interfaces. For example, decoded data could beformatted into an IP packet format prior to being encapsulated in someencapsulated format used for transmission between network interfaces.The encapsulated format could be a hardware encapsulated format fortransmitting the IP packet between network interfaces, such as through aPCI bus or some other hardware path between network interfaces. Decodeddata 302 is encapsulated as shown by 310. The encapsulation packagesdecoded data 302 as payload in between encapsulation layer E1, denotedas 309, and encapsulation layer E2, denoted as 311. Encapsulationrequires embedding payload data 302 into envelope 312; such as by addingthe payload to the envelope in between the encapsulation layers, addingthe encapsulation layers E1 and E2 to the payload, or both. Accordingly,data translated into the third format has been both decoded andencapsulated. Thus, data translated into the third format is representedas shown in envelope 312. The envelope 312 formed by E1 and E2containing payload such as decoded data 302 is designed to efficientlytransfer decoded data between network interfaces through thecommunication system. Note that envelope 312 is a common, transparentformat, such as the third format or the different format, useful andsuitable for transferring data between network interfaces independent ofthe origin or destination of the data. Also, envelope 312 can be used totransfer data transparently between network interfaces regardless ofwhat incoming network format and outgoing network format are used.

Since the payload can be extracted or decoded from incoming data in anynetwork format and can be encapsulated within E1 and E2, the enveloperepresenting the third format may represent a common transparent formatused for transferring the payload within the communication system, suchas between any two or more network interfaces. For example, envelope 312may be used transfer decoded data payload created from data received inan incoming network format between the incoming network interface andanother network interface. The envelope can be created from datareceived in any network format, such as the TCP/IP network layer model,the SS/7 or another telephony network layer model, or any other networklayer model. Further, decoded data 302 could comprise payloads otherthan layers 3 through 7 of the OSI model shown as an example in theFigures. For example, decoded data 302 could represent an IP packet,some other packet, a cell, another industry standard format, aproprietary format, some data structure, or the like. In other words,decoded data could be represented in various formats, including an IPpacket format. For instance, decoded data 302 could also represent partof one network layer, one network layer, or more than one layer of agiven network layer model. Decoded data 302 could represent data orinformation extracted from any incoming network and any incoming networklayer model and thereafter formatted into a particular decoded dataformat prior to encapsulation. For some embodiments, decoded data couldcomprise data received from any network in any network format arrangedor packaged into an IP packet format. In other words, incoming datareceived in any incoming network format could be decoded or extractedand thereafter formatted as decoded data payload contained in an IPpacket format for transmission between network interfaces. The IP packetcould be encapsulated into an envelope, such as 312 for example, fortransmitting the decoded data payload transparently between networkinterfaces. In one embodiment, data received from a POTS telephonynetwork could be decoded or extracted, and formatted as payload into anIP packet format representing decoded data 302. The IP packet formatcould be encapsulated, such as in a hardware encapsulated format, fortransmission between network interfaces. Further, the encapsulatedformat could be a hardware encapsulated format used to transmit decodeddata in an IP packet format transparently between network interfacesthrough a PCI type bus. Data received in other incoming network formats,such as WAN, fiber, or many others, could also be represented as decodeddata in an IP packet format for transmission between network interfaces.Alternatively, formats other than an IP packet could be used as thedecoded data format being encapsulated to support transparent dataexchanges between network interfaces. Further, any incoming data formatmay be supported by a compatible network interface, a processor, and acorresponding decoding process. The encapsulation process is typicallysimilar regardless of the particular incoming network formatencountered, since the encapsulation integrates a decoded data formatinto an appropriate encapsulated format used for transmission betweennetwork interfaces. Note that a processor executing a suitable computersoftware program product embodiment can encapsulate, decapsulate, orboth for the communication system.

The envelope 312 may be used to transfer decoded data 302 betweennetwork interfaces 223 and 226. The envelope may be transferred betweennetwork interfaces through the shared non-switched system bus 227 insome embodiments, as shown in FIGS. 5, 6(a) and 6(b) or otherwise asdescribed above. Thus, in some embodiments E1 and E2 may representhardware encapsulation information. Accordingly, E1 and E2 may includeaddressing, transfer control, or other information needed to transferthe envelope, including its decoded data payload, through the sharednon-switched system bus between network interfaces for some embodiments.Alternatively, E1 and E2 could include similar addressing, transfercontrol, or other information, such as software encapsulationinformation, needed to transfer the envelope between interfaces using asoftware encapsulated format. Envelope 312 may reside in memory mappedregisters or memory locations before and after being transferred betweennetwork interfaces. In another related embodiment, the sharednon-switched system bus may be a PCI bus, and the incoming network maybe the Internet or an IP network. In this case, the third format maycomprise an encapsulated PCI bus format for transmission of data betweennetwork interfaces. More specifically, the third format may alsocomprise an IP packet encapsulated in a PCI bus format for exchangingdata between network interfaces across the PCI bus. The payload ordecoded data may be represented as an encapsulated IP or InternetProtocol packet transferred over a PCI bus. As noted, the IP packetpayload could comprise one or more layers of the IP network layer model,such as one or more of IP layers 2 through 7. The encapsulated PCI busformat may be further translated, actually inverse translated, into anoutbound network format for transmission to another network. Again,computer software program products may support the translation andinverse translation processes for communication systems.

An example of this embodiment, having an IP encapsulated in a PCI busformat for transmission between network interfaces, is illustrated inFIG. 8, including Figures (8 a) and 8(b). In this case, network 221 canbe the Internet or another IP network, while the shared non-switchedsystem bus 227 may be a PCI type bus as per FIG. 8(b). Data received bythe first network interface 223 from network 221 may be decoded by thenetwork interface alone, assuming for example that the network interfacecan decode layers 1 and 2 of the TCP/IP stack or can extract data from aTCP/IP stack for this example. Processor 228 could then encapsulate thedecoded data, including at a minimum data or at least one network layer,into a hardware encapsulated third format, such as shown in FIG. 8(a).As before, we note that the decoded data, such as an IP packet or thelike for example, could comprise one or more of layers 2 through 7,depending on the given implementation. Alternatively, the decoded datacould represent data from a non-IP incoming network format repackaged aspayload in an IP packet format. The envelope 340 represents anencapsulated third format that includes an IP packet inside the decodeddata payload area 343. E1′ 341 and E2′ 342 are example encapsulationlayers that include all addressing and other parameters necessary totransfer the envelope in the third format across the PCI bus. Inessence, the IP packet is hardware encapsulated in a PCI bus formatsuitable for transmission between network interfaces. As shown in FIG.8(b), envelope 340 representing data in the third format can betransferred across PCI bus 227 between the receiving network interface223 and the other network interface 226. In practice, the envelope wouldreside in a first memory space, such as some memory mapped registers ormemory locations associated with the first interface 223. For example,the envelope 340 for a PCI embodiment could be represented in somememory mapped block format for PCI bus transfers that may includetransfer control, addressing information, and data payload portions fortransmitting data through the PCI bus between interfaces.

PCI bus transfers could then be enabled under software control to permitthe transfer of the envelope to a second memory space, such as to somememory mapped registers or memory locations associated with an outgoingnetwork interface, such as the second network interface 226. Forexample, a processor executing a computer software program productembodiment may be used to enable transfers of data. Thereafter, inversetranslation from the third format into a second network format, such asby decapsulating the envelope and then encoding the data payload into asecond network format, could optionally be performed. Inversetranslation is required to prepare payload in the encapsulated thirdformat for transmission to some outbound network. The data payload, ineffect an IP packet encoded with an outgoing network format, could thenbe transmitted to a second network 224 in the second network formatthrough the second network interface 226. In the above embodiment, whichin effect is “IP over PCI”, the third format may comprise an IP packetencapsulated in a PCI memory mapped control block structure which istransferred over the PCI bus using PCI bus cycles. IP over PCI may beaccomplished in an efficient manner using a standard PCI bus and off theshelf hardware through the communication system. In another relatedembodiment, the second network 224 can be a telephony network while thefirst network 221 could be the Internet or an IP network, such that IPtelephony or VoIP (Voice over IP) can be provided in addition to IP overPCI by these communication systems.

FIG. 9, including FIGS. 9(a) and 9(b), can be used to further describethe inverse translation process, such as translating data from the thirdformat into an outgoing network format. The inverse translation processrequires applying the subprocesses of decapsulation and encoding, inthat order, to data in the third format. Again, a processor executing asuitable computer software program product embodiment therein may beused. As shown in FIG. 9(a), envelope 312 carries payload data 302 inthe encapsulated third format, more specifically payload data 302 isencapsulated between encapsulation layers E1 309 and E2 311. The payloaddata 302 as indicated spans layers L3 through L7 for this example, butthe data could have been received in any incoming network format andencapsulated. FIG. 9(a) shows an example of the decapsulation process,the first part of the inverse translation process. Envelope 312 isdecapsulated by 315 as shown, which represents the decapsulationprocess. Decapsulation requires recovering payload data 302 fromenvelope 312, such as by extracting the payload or data from between theencapsulation layers E1 and E2 of the envelope, removing theencapsulation layers E1 and E2 from the payload, or both. Thedecapsulation process is the same for a given implementation of a thirdformat since it processes an encapsulated envelope in the third formatas the input. In any event, payload data 302 is recovered afterdecapsulation processing, as shown. E1 and E2 may be processed furtheror discarded as desired.

FIG. 9(b) shows an example of the encoding process, the second and lastpart of the inverse translation process. Encoding represents convertingor translating the recovered payload data into an outgoing networkformat suitable for transmission to a network. The encoding process canvary since it depends on the characteristics, such as the networkformat, of the outgoing network to which encoded data will betransmitted. Payload data 302 is encoded by 320 as shown, whichrepresents the encoding process. For this example, encoding for thepayload data requires adding a suitable layer 2 and layer 1 as shown by304, representing the data link layer and physical media layerrespectively, to the payload data 302 as represented by layers L3through L7. The encoding process can add one or more layers from a givennetwork format to the payload data to prepare it for transmission to theoutgoing network. At the conclusion of the inverse translation process,such as after decapsulation and encoding, the payload data is embodiedin a network layer model stack, such as 321, which can be transmittedthrough a network interface to an outgoing network in a compatiblenetwork format. Similarly to encapsulation, the decapsulation processrequires some processing resources, such as processor 228, one or moreother processors described herein, or the like. The encoding process,analogously to the decoding process, may be performed solely by theoutbound network interface, the processor, or both, depending on theoutgoing network format and the respective implementations of thenetwork interface and processor. In addition, both translations andinverse translations may be performed solely by the associated networkinterface, the processor, or both. Further, a computer software programproduct executing in a processor could be used to support one or more ofthese functions. Those skilled in the art should appreciate that thetranslation and inverse translation processes, including their componentsubprocesses, may have to reconcile differences in network formats, suchas those indicated by the differences in network layer models shown inFIG. 4. It is by reconciling differences in network formats that thecommunication system of the present invention can support transparentexchanges of data and information between networks and network formats.

An overview of how translating data into a third format supportstransparent exchanges of data is now provided. By using a commonsuitable third format, such as a different or an encapsulated format, itis possible to software switch and direct incoming data transparentlybetween network interfaces, without regard to the incoming networkformat and the outgoing network format. By using the common thirdformat, data can be transparently and generically exchanged betweennetwork interfaces of the communication system, regardless of thenetwork formats of networks attached to those network interfaces.Incoming data in an incoming network format can be decoded andencapsulated into a common third format. The incoming data can bedecoded by extracting it from one or more network layers of a networklayer model as required to create the payload or decoded data. Thepayload or decoded data can then be encapsulated as required to embodyit in the desired common third format. Once data in the common thirdformat has been effectively transmitted to an outbound networkinterface, the translation can be inverted or reversed. Thereafter, thecommunication system can decapsulate and encode data from the commonthird format into the network format of an outgoing network.Analogously, the encoding can be applied to one or more network layersof a network layer model as required for compatibility with the outboundnetwork format. As such, the data can thereafter be transmitted out ofan outbound network interface to the corresponding outbound network. Wenote that the translations and processing of data described abovefunction equally well whether the incoming network format and outgoingnetwork formats are the same or different. This is the case sinceincoming data and network formats are processed in a common, transparentmanner using translation into the common third format for transportingdata between network interfaces. In some cases, the translation andinverse translation processing must reconcile differences in networklayer models, as indicated by FIG. 4. The communication systems providedby the present invention can therefore exchange data and informationtransparently between diverse networks having different network formats.Computer software program product embodiments executing in at least oneprocessor can support the operation of the communication systems.

Next we describe the software switched and software controlled featuresof the system, which are significant aspects of the communicationsystems described herein. Software switching of data, software switchedtransmissions of data, and software switched logical connectionsestablished between network interfaces will be discussed. Thesefunctions are supported by computer software program product embodimentsprovided by the present invention. FIG. 10, representing a communicationsystem according to the present invention, will be used for somesoftware switching discussions. As noted, the transfer of data orinformation between network interfaces, whether in the third format ornot, is accomplished through software executing in a processor, such asprocessor 228 or the like as noted. FIG. 10, showing a representativeembodiment of a communication system 250 according to the presentinvention, may be used to illustrate software switched transmission andsoftware switched logical connections. By determining which interfacesshould be allowed to exchange data, the software could setup the routeused for sending and receiving data between network interfaces, thusperforming a software switching function. In other words, software canswitch data by determining what network interfaces are to exchange data,can enable those network interfaces to exchange data, and can optionallydetermine whether the data exchange will be unidirectional orbi-directional between network interfaces. For example, in FIG. 10software may determine that network interface 223 should transfer datato network interface 226 and can enable the data transfer between thosenetwork interfaces. As such, software switching and software enabledtransfers of data between network interfaces could occur withoutlogically connecting or associating network interfaces. Softwareswitching does not preclude establishing a logical connection orassociation between network interfaces for transferring data betweennetwork interfaces. For example, software may optionally determine thatnetwork interfaces 223 and 226 should be logically connected throughsoftware intervention so they can exchange data with each other. Thecommunication system relies upon software switched transmission toexchange data between network interfaces, optionally but not necessarilythrough a software switched logical connection established betweentransferring network interfaces. Thus, data can be transferred bysoftware switched transmission between network interfaces with orwithout establishing a logical connection between network interfaces.

Communication systems according to the present invention can performtheir switching using software, not hardware. The shared non-switchedsystem bus used in the communication system is by definition a common,party line bus without any intervening hardware switching devicesdisposed between network interfaces, processors, or the like. As shownin FIG. 10 for example, shared non-switched system bus 257 connectsnetwork interfaces 223 and 226 directly without any intervening hardwareswitching devices. In a like manner, the switching of data betweennetwork interfaces is performed under software control, without relianceupon hardware switching devices as duly noted. A processor such as 228or the like executing a software program can receive information from asource external to the communication indicating which network interfacesare to exchange data. The processor can establish a data transferbetween those network interfaces, in essence by switching the data usingsoftware, and support a software switched transmission of data betweenthose network interfaces. In addition, a processor executing a softwareprogram, such as processor 228 shown in FIG. 10 or the like, can receivenetwork interface connection information, indicating which two or morenetwork interfaces are to be logically associated or connected fortransferring data between the specified network interfaces. For example,network interface connection information or a software command could atleast contain parameters indicating which network interfaces are to belogically connected for exchanging data. The processor can use thenetwork interface connection information to establish a softwareswitched logical connection for exchanging data between the specifiednetwork interfaces. By logically associating or connecting the specifiednetwork interfaces, software switched transmission of data can occuronce a software switched logical connection is established betweennetwork interfaces. For example, network interface connectioninformation may direct that network interfaces, such as 223 and 226shown in FIG. 10, should be logically associated and logically connectedtogether for purposes of transferring data therebetween. As such,software determines that data will be transferred between networkinterfaces 223 and 226, in essence switching and enabling transfers ofdata between those network interfaces and their respective connectednetworks. The data transfer may be conducted through the establishedsoftware switched logical connection that connects network interfaces223 and 226.

Software switched transmission of data can be established by theprocessor, the receiving network interface, the outgoing networkinterface, or some combination thereof. Recall that in some embodiments,network interfaces may include a processor or programmable controllertherein. Software switched logical connections can be establishedautomatically under software control, without requiring interventionfrom a user of the communication system, between network interfaces. Thesoftware switched logical connection logically relates and connectsnetwork interfaces to each other such that data transfers are enabledtherebetween. In essence, this software may use network interfaceconnection information to issue commands to the respective networkinterface or interfaces so as to “introduce” them to each other or tomake each network interface aware of other network interfaces with whichdata may be exchanged. For example, the processor executing softwarecould issue commands to address registers within the network interfacesshown in FIG. 10 so that the interfaces can transfer data to each otherusing memory mapped transfers. For instance, the processor executingsoftware could setup control blocks in memory to enable transfers orexchanges of data between two or more network interfaces. As a furtherexample, the processor executing software could issue commands to setupmemory mapped transfers, such as DMA transfers, between mutually memorymapped network interfaces. Once introduced, network interfaces cantransfer or exchange data directly between network interfacesautonomously and without requiring any additional processor or softwareintervention. In other words, once data transfers between networkinterfaces have been setup; the network interfaces can initiate the datatransfer therebetween autonomously without needing any additionalprocessing or software intervention.

Data or information may be transferred directly between networkinterfaces through the software switched logical connection establishedbetween transferring network interfaces. Software switched transmission,as used herein, includes using software executing in a processor, suchas an operably connected external processor, to determine what networkinterfaces should be enabled to exchange data with one another, andissuing any required commands or performing any actions required toestablish data transfers or data exchanges between the networkinterfaces. As explained, software switched transmission of data couldbe provided with or without establishing a software switched logicalconnection between network interfaces. For example, transfers betweennetwork interfaces such as those shown in FIG. 10 could be setup andexecuted without logically connecting or associating network interfacestogether under software control. However, these data transfers orexchanges could occur through a software switched logical connectionestablished between those network interfaces. Transferring data througha software switched logical connection can simplify the software designsignificantly. Since a network interface can be addressed by software asa “port”, software commands or the like can be created to simply connectports together. It is possible that the software commands used toconnect ports together can logically connect two or more ports togetherin a ring or daisy chained configuration. For example, a first networkinterface and second network interface can be connected, while thesecond network interface and a third interface can be connected, andwhile the third network interface and the first network interface can beconnected. This optional ring interconnection of network interfaces maybe used when exchanging video or image information, as with avideoconference application of the communication system. Of course,network interfaces can also be connected in a star configuration orother configurations as required.

There are at least three mechanisms through which software switchedtransmission or software switched logical connections can be establishedunder software control. First, a user could interact with a GUIinterface on a Personal Computer running a software application andconnected to some interface of a communication system. This approach maybe used for configuring parameters initially, but has performance andinefficiency problems if the ongoing data transfer operations of thesystem are managed this way. In a second option, automatic softwaremodules can operate real-time in order to effect software switchedtransmissions of data, to establish and de-establish logical connectionsof network interfaces, or both. Third, status events or other eventsoccurring at one or more network interfaces can be monitored bysoftware, such that software switched transmissions or software switchedlogical connections between network interfaces can be setup under eventdriven software control. Those skilled in the art realize that manyother mechanisms not disclosed here might also be possible.

The software switched logical connection can comprise a hardware pathestablished between network interfaces, at least temporarily, undersoftware control. For example, a software switched logical connectioncould be represented by programmed memory accesses or DMA accessesestablished across the shared non-switched system bus to transfer databetween network interfaces 223 and 226 in FIG. 10. Further, the softwareswitched logical connection may comprise the processor establishing alogical hardware connection between network interfaces for transmittingdata in the third format directly between network interfaces. Thelogical hardware connection may comprise a memory mapped connectionbetween network interfaces, a memory mapped connection between networkinterfaces established through the shared non-switched system bus, or aDMA memory mapped connection between network interfaces establishedthrough the shared non-switched system bus. The logical hardwareconnection may also provide either bidirectional or uni-directional datatransfers between network interfaces. For some embodiments in which theshared non-switched system bus is a PCI type bus, software switchedtransmission of data in the third format may comprise establishing asoftware switched logical hardware connection, across the PCI busbetween network interfaces, for exchanging data in the third formattherebetween. In this embodiment, the software switched logical hardwareconnection may comprise establishing a PCI memory mapped connectionbetween network interfaces. For example, shared non-switched bus 257 inFIG. 10 could be a PCI bus, and a memory mapped connection betweennetwork interfaces 223 and 226 could represent the logical connectionfor transferring data therebetween. Two or more network interfaces canoptionally be logically connected or associated together under softwarecontrol so that they exchange data between the logically connectednetwork interfaces. PCI memory mapped logical connections may includemaster to target PCI bus memory access cycles, bidirectional PCI busmemory access cycles, master to target PCI bus DMA access cycles, andbi-directional PCI bus DMA access cycles for transmitting data directlybetween network interfaces through the PCI bus.

For this PCI embodiment, software switched transmission may alsocomprise transmitting data directly between network interfaces throughthe PCI bus, independently of the processor, after the software switchedlogical connection is established between network interfaces. Networkinterfaces can use the logical connection or hardware path onceestablished to transfer data between network interfaces. After thelogical connection has been established under software control, datatransfers may be started by and carried out autonomously between networkinterfaces, without further software or processor intervention. Forexample, DMA transfers between network interfaces 223 and 226 in FIG. 10can occur automatically sometime after software has established alogical connection between interfaces by enabling DMA transfers betweenthose two interfaces. Data transfers through a logical connection cancontinue uninterrupted until and unless there is no more data totransfer or the logical connection between network interfaces isdisabled or de-established under software control. A logical connectioncould be de-established by commands or the like issued to networkinterfaces under software control. The commands could break the logicalconnection between network interfaces, could prevent any furtherautonomous data transfers between network interfaces, or both. Aprocessor executing software used to perform software switchedtransmission of data may also de-establish the data transmission orlogical hardware connection established between network interfaces.

Software executing in a processor may determine which network interfacesshould be enabled to exchange data therebetween. Once the processorexecuting software has determined which network interfaces are toexchange data, such as between network interfaces 223 and 226 in FIG. 10for example, software issues commands to those network interfaces. Datatransfers can be established between any two or more network interfaces,including external interfaces, as may be required. Each networkinterface can transfer data to and receive data from, one or more othernetwork interfaces in an interleaved bi-directional manner. Whilebidirectional data transfers can be established, data transfers in onedirection between network interfaces are also supported as a subset ofthe bi-directional transfers that can be enabled. Since data transfersmay optionally be performed through the shared non-switched system bus,some interleaved data transfers may at times be queued temporarilywaiting to access the shared non-switched system bus. Software switchedtransmission of data may further comprise transmitting data directlythrough the logical hardware connection, independently of the processor,after the processor establishes the logical hardware connection betweennetwork interfaces.

Another preferred embodiment of a communication system according to thepresent invention is illustrated in FIG. 11. In particular, the Figureshows a communication system 240 for exchanging data and informationbetween networks. This communication system embodiment is an integratedsystem supporting externally controlled exchanges of data andinformation between networks, by using received network interfaceconnection information. Other related communication system embodimentscan optionally also support transparent exchanges of data betweennetwork interfaces, such as by using the common third format andvariants thereof as described previously. The communication systemcomprises a first network interface 223, a second network interface 226,and a processor 228. Those skilled in the art will recognize that thecommunication system may comprise more than two network interfaces, aswell as other types of external interfaces. The first network interface223 is connected to a first network 221 through link 222 as shown, andexchanges data in a first network format with the first network.Similarly, the second network interface 226 is connected to a secondnetwork 224 through link 225 as shown, and exchanges data in a secondnetwork format with the second network. In one embodiment, the firstnetwork format may comprise at least one of a network protocol and anetwork transport or media associated with the first network, while thesecond network format may comprise at least one of a network protocoland a network transport or media associated with the second network. Thefirst network interface 223 and the second network interface 226 areoperably connected. The network interfaces may be connected as shownthrough operable connection 247, for example. Optionally, the networkinterfaces may be connected through a shared non-switched system bus insome embodiments. Other connections described previously between networkinterfaces may be used. The processor 228 further comprises an externalinterface 241 that can be used to communicate through link 242 with anexternal node 243. As such, the processor 228 can exchange informationand data with external node 243, and can transmit and receive data andinformation through link 242. As noted before, the terms networkinterface, external interface, and interface are used interchangeably toindicate the various interfaces of a communication system between whichreceived data or information can be exchanged through softwarecontrolled switching. Processor 228 can also execute a suitable softwareprogram embodiment therein to support these operations, such as forinterfacing with the external interface, the first network interface,and the second network interface, for example. In addition, theprocessor 228 can be operably connected to at least one of the firstnetwork interface 223, the second network interface 226, and theexternal interface 241 such that it can interface with, and can supportexchanges of data between, each operably connected interface. Thecommunication system 200 of FIG. 2 and also communication system 220 ofFIG. 5 can optionally support externally controlled exchanges of dataand information between networks by using network interface connectioninformation received from a source external to the communication system.

Processor 228 can therefore receive network interface connectioninformation, such as information describing which two or more networkinterfaces are to be logically connected under software control, from atleast one of the interfaces operably connected to the processor. Theprocessor executing a software program can use the network interfaceconnection information received to optionally establish a softwareswitched logical connection between the first network interface and thesecond network interface. The processor executing a software program canestablish the logical connection automatically and without any real-timeintervention from a user of the communication system. In any case, thenetwork interface connection information could indicate to the processorthat it should logically interconnect at least the first networkinterface and the second network interface. More than two networkinterfaces or different types of interfaces of the communication systemcould be logically interconnected. The logical connection is softwareswitched since the processor executing a software program determineswhich network interfaces are to be logically connected together, andestablishes the logical connection therebetween. The processor may issuecommands to at least one of the network interfaces involved in theexchange of data in order to establish the software switched logicalconnection, as discussed. Optionally, the software switched logicalconnection may comprise a hardware connection established under softwarecontrol by the processor. The hardware connection is established by theprocessor between the first and second network interfaces fortransmitting data between network interfaces. For example, assuming thatthe network interfaces within the communication are memory mapped, thesoftware switched logical connection could comprise creating a memorymapped connection between network interfaces. Accordingly, the hardwarelogical connection could be a unidirectional logical connection orbi-directional logical connection established between memory mappednetwork interfaces for exchanging data. Regardless of the implementationused, the establishment of the logical connection supports transfers andexchanges of data between interfaces through the communication system.As duly noted, the software switched logical connection between networkinterfaces can also be de-established by the processor under softwarecontrol.

The present embodiment relating to externally controlled exchanges ofdata and information shares some features in common with other disclosedembodiments, such as the embodiment shown in FIG. 2 or FIG. 5. Unlessotherwise defined differently in describing the present embodiment, theterms and features herein, including various alternative embodiments andimplementation noted, are to be as defined as per descriptions providedwith other disclosed embodiments. Terms not defined in the disclosure ofthe present embodiment should be construed as they would be by thoseskilled in the art. For example, the processor and network interfaces,including various alternative configurations, should be construed hereinas previously described. For instance, with the exception of the directnature of the transmission between network interfaces, the priordiscussions of software switched transmission and software switchedlogical connections are applicable for this embodiment. This embodimentdoes contain some differences as compared to prior embodiments, such asnot necessarily requiring the use of the third format or encapsulation.Also, the present embodiment includes an external interface. Forinstance, the external interface of this embodiment, such as externalinterface 241 of FIG. 11, should be construed analogously to thepreviously described network interfaces, except that the externalinterface 241 may optionally attach to some communication link, such asa local or remote RS-232 interface for instance, that may or may not beconnected to a network. For example, the external interface couldcomprise an RS-232 interface or other connection established directlywith a Personal Computer or another communication system. Alternatively,the external interface could comprise another network interface that canbe used similarly to the other network interfaces for exchanging datawith networks. Those skilled in the art will appreciate that there aremany possible options for the external interface. Also, the networkinterface connection information could be received by one or moreinterfaces. For example, an external interface as described, a networkinterface, or both could be used to receive network interface connectioninformation from a source external to the communication system. Thus,the external interface of the processor could be the first networkinterface, the second network interface, or an interface independent ofthe first and second network interfaces. Allowing network interfaceconnection information to be received by any interface of acommunication system provides flexibility in externally controllingsoftware switching of data within the communication system.

Data or information may be received into one network interface, such asinto one of the first network interface 223 and the second networkinterface 226. The other network interface could be the other of thefirst network interface 223 and the second network interface 226, suchas the network interface for which the received data or information wasdestined. The received data or information can be transmitted directlybetween the one network interface and the other network interfacethrough the software switched logical connection between networkinterfaces. For this embodiment shown in FIG. 11, direct transfersbetween network interfaces could optionally include intervening hardwaredevices, such as switches, routers, or the like, between networkinterfaces. The logical connection or path between network interfacescould be established by processor interaction with the interveninghardware devices. However, these direct transfers could be optionallyprovided herein such that there are no intervening hardware switching orrouting devices between network interfaces. In any case, after theprocessor executing software has established the logical connection, thetransmission of data through the software switched logical connectioncan occur without further processor intervention. A processor executinga suitable software program, along with other facilities of thecommunication system such as network interfaces, an external interface,and the like, can help provide externally controlled switching ordirecting of data between networks through network interfaces of thecommunication system.

The embodiment shown in FIG. 11 does not require that incoming datareceived be translated from an incoming network format into a thirdformat. Optionally, in a related embodiment the data or informationreceived by a network interface could be translated from the networkformat as received from the one network into a third format, aspreviously discussed. The third format or different format can be usedto support software switched transmission and transparent exchanges ofreceived data or information from the one network interface directly tothe other network interface. For one related embodiment, data receivedby one network interface may optionally be converted or translated fromthe one network format as received into a hardware encapsulated formatfor transmission to the other network interface. In this case, theprocessor, the one network interface receiving data, or both, couldperform the conversion or translation required. As previously discussed,data in the hardware encapsulated format received by one networkinterface may optionally be translated into another network format fortransmission through the another network interface to another network.The embodiment of FIG. 11 can provide externally controlled exchanges ofdata and information between networks. In combination with otherdisclosed features of the present invention, this embodiment can alsoprovide intelligent and transparent exchanges between networks whilereconciling different forms of data, different types of information, anddifferent network formats.

A related embodiment of the communication system further comprises asecond processor therein, such as second processor 229 as shown in FIG.11. The second processor is shown by a dotted line box to show that itis optional. The second processor 229 may be operably connected toprocessor 228, and may additionally be operably connected similarly toprocessor 228, as shown by the solid and dotted line connections betweenprocessor 228 and other parts of the communication system. Thus, thesecond processor 229 may be operably connected to at least one of thefirst network interface 223, the second network interface 226, theexternal interface 241, and the processor 228. For this embodiment, oneof the processor and the second processor may perform conversions,translations, or other functions of the communication system, while theother of the processor and the second processor may establish softwareswitched logical connections between network interfaces for exchangingdata. As before, the processors can share supporting these functions ona static or dynamic basis as desired. Translated data in the hardwareencapsulated format may be transmitted directly from the one networkinterface to the other network interface, through the software switchedlogical connection established between network interfaces.

The operable connection between first network interface 223 and secondnetwork interface 226, such as example operable connection 247, may beimplemented in different ways in different embodiments. This embodimentdoes not necessarily require a shared non-switched bus, PCI bus, oranother bus as noted. For example, the operable connection for thisembodiment could be implemented through a cable or fiber providing someelectrical or optical connection respectively between network interfacesfor exchanging data therebetween, as described before. In a relatedembodiment, the operable connection 247 may optionally comprise a sharednon-switched system bus, such shared non-switched system bus 227described in other embodiments, for example as shown in FIG. 5. Thus, atleast the first network interface 223 and the second network interface226 may be operably connected through the shared non-switched systembus. Further, the software switched logical connection between the firstand second network interfaces may be established through the sharednon-switched system bus. One embodiment includes a PCI bus serving as ashared non-switched bus, such that data received by one networkinterface in the one network format may optionally be translated into ahardware encapsulated format for transmission from the one networkinterface to the other interface across the PCI bus. For a PCIembodiment, the software switched logical connection established betweennetwork interfaces across the PCI bus could comprise a memory mapped PCIbus transfer such as a unidirectional PCI bus transfer, a bi-directionalPCI bus transfer, a PCI memory access cycle, a PCI DMA access, orcombinations thereof. In a related embodiment, at least one of thenetworks connected to the network interfaces comprises an IP network,such that the hardware encapsulated format comprises an IP packetencapsulated in a PCI bus format for transmission between networkinterfaces. As discussed in other embodiments, this would represent IPover PCI, as implemented by the communication system.

Next, we describe external node 243, which is connected to externalinterface 241 through link 242 as shown in FIG. 11. The external nodecan be implemented in a variety of ways. For example, the external nodecould be a Personal Computer, communication system, networking device,or the like. Preferably, the external node contains a processor thereinexecuting a suitable software program embodiment therein. One embodimentincludes an external processor, such as an external processor containedin an external node like 243, operably connected to at least one of thefirst network interface, the second network interface, and the externalinterface. The external processor of the external node executes asoftware program therein and has sufficient memory, I/O, and peripheralsfor interacting with a communication system, such as 220 or 240 forexample.

The software program embodiment executed by the external processor ofthe external node could include a software module or softwareapplication for interacting with the communication system, such as fordetermining the number of networks and devices attached to the variousinterfaces of a communication system. For this software program,interfaces could include network interfaces, external interfaces, orboth of a communication system. In addition, the external processorcould optionally determine what bandwidth, what type of network, whatnetwork format, what format of data, and what type of information areassociated with each interface of the communication system. The softwareprogram could be informed of some event or activity occurring at somepart of the communication system, such as at a network interface orexternal interface of the communication system. For example, an event oractivity could represent some communication between the communicationsystem and an attached network or device, or could represent detectingsome link or network going online or offline. Further, an event oractivity of the communication system could represent some status orerror information from an attached network or device, could representsome other condition associated with an attached network or device, orthe like. The software program can analyze the event or activityoccurring at the communication system, and may or may not transmit acontrol message or the like to the communication system which couldcause the communication system to take some action in response. Forinstance, the software program could cause the communication system toinitiate another event or activity for responding to an event oractivity occurring at an interface. Optionally, the software programcould initiate some event or activity at an interface of thecommunication system, whether or not in response to another event oractivity occurring at the communication system. The software programexecuted by the external processor could also determine whether toconnect interfaces together, which two or more interfaces to connecttogether, and how to connect interfaces together in a communicationsystem connected either directly or indirectly to the externalprocessor. Optionally, the external processor executing the softwareprogram may transmit network interface connection information to aprocessor in a communication system operably connected thereto.

As such, the processor in the communication system could use theconnection information to establish a software switched transmission orsoftware switched logical connection between the specified networkinterfaces. The software program executing in the processor of thecommunication system could be able to interpret network interfaceconnection and commands received from the external processor. As such,the processor in the communication system can act as an agent or commandinterpreter for the external processor. In addition, software executingin the processor of the communication system could have awareness of theexternal processor and of the status of each network interface andexternal interface of the communication system. Thus, the processor ofthe communication system can relay network interface status, externalinterface status, and other status of a communication system as may berequired by the software program executed by the external processor.With real-time status obtained from the communication system, thesoftware program executing in the external processor can make informeddecisions regarding whether, how, and which network interfaces of thecommunication system could be logically connected for exchanging data.The software program can intelligently decide how to software switchdata between interfaces, whether and which interfaces to logicallyconnect, or both, according to some other applications or services thatmay be provided by the software program executing in the externalprocessor.

As mentioned, the software program executed by an external processorcould include a software application that can determine how to manageand request the interconnection of interfaces within a communicationsystem. For example, an incoming telephone call directed into onenetwork interface of the communication system could cause the softwareprogram to order the logical connection of the one network interface toanother network interface connected to the Internet or an IP network.Thus, an incoming POTS telephone call could be directed to the Internetor another IP network in an implementation of VoIP (Voice over IP),without requiring any specialized IP telephones or the like. In anotherexample, the software program could order the connection of variousinterfaces connected to telephony networks to create a teleconference.Further, the software program could issue commands to interconnectvarious Personal Computers or the like for establishing real-timevideoconferences through the communication system. These are but a fewexamples of the many functions and services that can be provided by acommunication system connected to an external processor executing asuitable software program. Note that the software switched functions ofa communication system may be completely controlled externally throughthe external processor executing a suitable software program therein.

Communication systems described herein rely on various computer softwareprogram product embodiments in order to support a number of itsfunctions and operations. First we refer to FIG. 12 for a discussion ofthe hardware environment in which the various software embodimentsprovided by the present invention operate. Of course, various softwareembodiments support the operation of the various communication systemsdescribed herein as well. Note that network interfaces, externalinterfaces, and all interfaces of the communication system arefunctionally equivalent and are viewed as interchangeable for thecomputer software program product embodiments provided by the presentinvention. As shown, communication system 300 contains a processor 328therein executing at least one computer software program embodiment. Inaddition, communication system 300 provides some interface receivingdata, such as network interface 323 that receives data through link 322.In addition, the communication system provides at least one otherinterface, such as network interface 326. Further, communication system300 is operably connected to an external processor such as externalprocessor 343 through operable connection 342. External processor 343can execute at least one computer software program embodiment therein.Note that an external processor such as 343 may be operably connected toa communication system through a network interface, an externalinterface, or any other interface of a communication system. Using asuitably programmed processor the processor 328 and a suitablyprogrammed external processor 343, the communication system can exchangedata between network interfaces such as network interface 323 andnetwork interface 326. Some computer software program embodimentssupport exchanges of data and information between network interfaces.Other computer software program embodiments support format translationsapplied to data in various forms, such as an incoming data format, adifferent format suitable for software switched transmission of databetween interfaces, and an outbound data format.

A first category of computer software program product embodimentsexecute in an external processor such as 343 that is external to acommunication system such as 300. Such embodiments support the operationof a communication system by externally performing software switchingfunctions for it. We refer to FIG. 13 for a flow diagram illustratingsome computer software program product embodiments for execution in anexternal processor operably connected to a communication system, forsupporting exchanges of data between networks as described herein. Forexample, an external processor 343 can decide to which other interfacesof the communication system incoming data such as data being receivedfrom link 322 is to be switched, according to some intended applicationof the received data. Accordingly, the communication system, such as300, may be relieved of the performance burden of performing softwareswitching so that data transfers may be supported more efficiently. Inaddition, new and improved applications for incoming data received canbe supported in one or more external processors such as 343.

Further, a second category of computer software program productembodiments execute in a processor, such as 328, within a communicationsystem such as 300 as shown in FIG. 12 or other Figures. These softwareembodiments can interact in a complimentary manner with the externalprocessor and computer software program embodiments executing therein.We refer to FIG. 14 for a flow diagram illustrating some computersoftware program product embodiments for execution in a processor withina communication system that is operably connected to an externalprocessor, for supporting exchanges of data between networks asdescribed herein. These embodiments inform the external processor whendata is received through a network interface such as 323 of thecommunication system such that the external processor such as 343 canperform a software switching decision for received data. The externalprocessor such as 343 can communicate the results of the softwareswitching decision back to the communication system 300, such as byindicating to which one or more other network interfaces the incomingdata received is to be transferred. For example, incoming data receivedfrom link 322 through network interface 323 may be software switched tonetwork interface 326 to be transmitted through link 325. A softwareembodiment executing in a processor of the communication system such as328 can receive network interface connection information from anexternal processor such as 343. Thus, a processor in a communicationsystem executing a software embodiment can use the network interfaceconnection information received from an external processor to performthe associated data transfers between interfaces of the communicationsystem. The processor within the communication system can therebyimplement the results of the software switching decision made by theexternal processor operably connected to the communication system. Assuch the incoming data received can be sent to another network interfacefor transmission by the communication system. Note again that as usedherein, the terms network interface, external interface, and interfaceare used interchangeably to indicate the various interfaces of acommunication system between which received data or information can beexchanged through software controlled switching.

In addition, a third category of computer software program productembodiments can be executed by a processor, such as 328, within acommunication system such as 300. These software embodiments operate totranslate the incoming data from the network format as received into adifferent format suitable for software switched transmission betweeninterfaces of the communication system, such as between networkinterfaces 323 and 326. For example the different format may be thethird format, common format, transparent format, encapsulated format, orthe like, that can support software switched exchanges of data betweeninterfaces of the communication system. We refer to FIG. 15 for a flowdiagram illustrating some computer software program product embodimentsfor execution in a processor within a communication system that isoperably connected to an external processor, for supporting exchanges ofdata between networks including data translations as described herein.These translating software embodiments may optionally operate responsiveto results of the external software switching decision performed by anexternal processor such as 343. Optionally, these software embodimentscan further translate data from the different format suitable forsoftware switched transmission between interfaces into an outboundnetwork format suitable for transmission from another interface of thecommunication system. As such, end-to-end exchanges of data betweennetworks are supported through a communication system as disclosed.

We now discuss in greater detail the first category of computer softwareprogram product embodiments that execute in a processor external to thecommunication system. We return to FIG. 13 for a flow diagramillustrating some computer software program product embodiments forexecution in an external processor operably connected to a communicationsystem, for supporting exchanges of data between networks as disclosedherein. One computer program product embodiment comprises a computerprogram product stored in computer readable media for execution in atleast one processor external to but operably connected to acommunication system such as those described herein. Accordingly, thecommunication system such as 300 in operation exchanges data betweennetworks through at least two network interfaces therein, such as thoseshown in FIG. 12 and in other Figures. The computer program productembodiment comprises at least a first software module, a second softwaremodule, a third software module, a fourth software module, and a fifthsoftware module operating therein. Its first software module is used fordetermining that a first network interface of the communication systemis receiving data from a first network in a first network format. Thisprocessing by the first software module is shown as 400 in FIG. 13. Inaddition, the second software module is used for determining to which ofat least one other network interface of the communication system thedata received may be switched in support of at least one functionalapplication of the received data. For example, voice data received froma POTS telephone attached to the communication system may be transmittedto the Internet to support a Voice over IP application for the receiveddata. This processing by the second software module is shown as 410 inFIG. 13. Further, a third software module is used for software switchingthe data received from the first network interface to at least one othernetwork interface of the communication system according to at least oneselected functional application. This processing by the third softwaremodule is shown as 420 in FIG. 13. The fourth software module is usedfor creating at least network interface connection information for thecommunication system reflecting the result of the software switchingdecision between the first network interface and at least one othernetwork interface. This processing by the fourth software module isshown as 430 in FIG. 13. In addition, the fifth software module is usedfor transmitting at least the network interface connection informationto the communication system to control therein to which at least oneother network interface the first network interface will transmit theincoming received data to implement software switching in accordancewith the selected functional application. This processing by the fifthsoftware module is shown as 440 in FIG. 13. As such, the computersoftware program product executing in at least one external processorcan perform software switching for an attached communication system.

In a related computer program product embodiment, a sixth softwaremodule is also provided. Note that this sixth software module isoptional in some software embodiments, as shown by the dashed line inFIG. 13. The sixth software module is used for receiving configurationor status information of various types from the operably connectedcommunication system. This processing by the sixth software module isshown as 450 in FIG. 13. The configuration information received canconsist one or more types of configuration information about thecommunication system. For example, the configuration informationreceived could indicate which network interfaces are present in thecommunication system, which network interfaces are configured in thecommunication system, or which network interfaces are active in thecommunication system. For instance, the configuration information couldindicate what type of networks are connected to network interfaces ofthe communication system, what types of network formats are supported bynetwork interfaces, what types of network formats are in use in networkinterfaces of the communication system, or what type of physicalinterface is currently in use in network interfaces of the communicationsystem. Still further, the configuration information may indicate thebandwidth of network interfaces in the communication system, the statusof at least one network interface in the communication system, or whatnetwork nodes are connected to each network interface of a communicationsystem, for example. As a further illustration, the configurationinformation could inform about an event occurring from at least onenetwork interface in the communication system, or the status of at leastone network node connected to the corresponding network interfaces ofthe communication system. These are but a few of many examples ofpossible configuration information that could be received by the sixthmodule executing in a processor external to a communication system.

Further computer software program product embodiments further describedetails regarding the configuration information. The configurationinformation received by the computer program product could be providedin a number of different ways. For instance the configurationinformation could be solicited after power up but before completion ofinitializing the communication system, or it could be unsolicitedconfiguration information received after power up but before completionof initializing the communication system. Further, the configurationinformation could be solicited after the communication system iscompletely initialized, or it could be unsolicited configurationinformation received after the communication system is completelyinitialized. For example, the configuration information could besolicited after the communication system is communicating with at leastone attached network, or it could be unsolicited configurationinformation received after the communication system is communicatingwith at least one attached network. Those skilled in the art willappreciate that these are merely examples and it is possible to haveother types of configuration information.

There are a number of configurations through which external softwareswitching can be performed using computer software program productembodiments in support of communication systems. The computer programproduct embodiments can control software switching in the communicationsystem through execution in at least one processor operably connected tosome communication system. In one case, a single external processoroperably connected to a communication system and executing a programproduct embodiment therein can operate as a single software switchingresource for the communication system. In some cases, there may be twoor more external processors such as 343 shown in FIG. 12 to support acommunication system. In another case, at least two external processorsoperably connected to a communication system can each execute a programproduct embodiment configured to operate as a single redundant softwareswitching resource for a given communication system, such as to providefault tolerant software switching for example. Further, at least twoexternal processors operably connected to a communication system caneach execute a program product embodiment therein and be configured toshare software switching functions therebetween for the communicationsystem. Switching may be shared in many ways. At least two externalprocessors executing a program product embodiment therein and operablyconnected to a communication system can also be configured to splitsoftware switching functions therebetween for the communication systembased on at least two functional applications. For instance, oneexternal processor may be responsible for VoIP related switching whileanother may be responsible for videoconference related switching. Inaddition, at least two external processors executing a program productembodiment therein and operably connected to a communication system maybe configured to split software switching functions therebetween for thecommunication system based on relative processor workloads. For example,if one processor is busy and the other processor is idle, the idleprocessor may perform software switching for the communication system.Further, at least two external processors executing a program productembodiment therein and operably connected to a communication system canbe configured to split software switching functions therebetween for thecommunication system based on the network interfaces supported by eachexternal processor. For instance, one processor may be responsible forproviding software switching for physical network interfaces 1 through16, while the other may be responsible for providing software switchingfor physical network interfaces 17 through 32. Of course, there are manyother ways in which two or more external processors may be used toprovide software switching services for an operably connectedcommunication system.

For some computer program product embodiments, at least two externalprocessors provide software switching for the operably connectedcommunication system, and the communication system is able tocommunicate individually with each external processor. For example,there may be two or more external processors such as 343 shown in FIG.12. When this is the case, there are a number of ways in which acommunication system can identify with which external processor orprocessors it should individually communicate. A communication systemcan identify an operably connected external processor according to atleast one network interface it software switches for the communicationsystem. Further, a communication system may identify an operablyconnected external processor according to at least one network addressassociated with at least one network interface the external processorsoftware switches for the communication system. In addition, acommunication system can identify an operably connected communicationsystem by using a dynamic table lookup mechanism, for example a dynamictable lookup could associate external processors with the networkinterfaces each external processor software switches for thecommunication system. Yet further, a communication system might identifyan operably connected external processor according to a dynamic tablelookup associating external processors with network addresses associatedwith network interfaces each external processor software switches forthe communication system. Also, a communication system might identify anoperably connected external processor according to identifying at leastone network address associated with each external processor, such thatan external processor might provide software switching services for thecommunication system based on network addresses. In addition, acommunication system could identify an operably connected externalprocessor according to identifying at least one network node associatedwith each external processor that provides software switching for one ormore network nodes attached to a communication system. For example, anetwork node could be a personal computer attached to a communicationsystem. It is possible for a communication system to identify anoperably connected external processor by identifying at least one deviceattached to a network interface associated with each external processorthat provides software switching for data received from a given device.For instance, a device could be a telephone attached to a communicationsystem. In addition, a communication system can broadcast a transmissionto each external processor such that each external processor can comparethe network interface originating the transmission to the networkinterface or interfaces for which it provides software switchingservices for the communication system. Further, the communication systemcould broadcast a transmission to each external processor such that eachprocessor can compare the network address of the transmission to thenetwork addresses it is responsible for software switching. In any case,the communication system would be assured that each external processorwould receive a transmission but only the mapped external processorwould act on the transmission. Each computer program product embodimentexecuting in an external processor could analyze the transmission anddetermine if this is from a network interface associated with thatexternal processor. Using some means of identifying which externalprocessor to communicate with, a communication system can when an eventoccurs at some network interface, the communication system could send astatus transmission out to only the network addresses at which reside anexternal processor that is interested in this network interface. Asthose skilled in the art will surely appreciate, there are yet otherways in which a communication system can identify which of multipleoperably connected externals processor it will communicate with.

As noted, in some computer program product embodiments each externalprocessor, similar to 343 in FIG. 12, that is operably connected to acommunication system maintains a lookup table. This lookup table mayprovide many other additional associations and information well beyondwhat was discussed previously. For example, a lookup table in anexternal processor operably connected to a communication system maycontain information regarding all network interfaces of thecommunication system for which an external processor provides softwareswitching services. A lookup table in an external processor operablyconnected to a communication system might include information about allnetwork addresses associated with all network interfaces for which anexternal processor provides software switching services through thecommunication system, for instance. In addition, a lookup table in anexternal processor operably connected to a communication system maycontain information regarding all network nodes associated with allnetwork interfaces for which an external processor provides softwareswitching. For instance, this information may indicate that a PC at somenetwork address is connected to network interface 4 of a communicationsystem. As a further example, an external processor operably connectedto a communication system may have a lookup table containing all devicesassociated with network interfaces of the communication system for whichan external processor provides software switching services. Forinstance, the lookup table may indicate that a telephone is connected tonetwork interface 7 of a communication system. A lookup table in anexternal processor operably connected to a communication system mightinclude information about the relationship between network interfacesfor which an external processor provides software switching. Forexample, network interface 3 and network interface 7 may be related byexchanging data therebetween in a Voice over IP application. Inaddition, an external processor operably connected to a communicationsystem may have a lookup table containing information regarding thephysical location of devices attached to network interfaces for whichfor which an external processor provides software switching services.For instance, a PC connected to network interface 5 and a PC at networkinterface 4 may both be located at the desk of some user. Further, alookup table in an external processor operably connected to acommunication system might include information regarding the user ofdevices attached to network interfaces for which an external processorprovides software switching. For example, the PC connected to physicalnetwork interface 5 and a PC connected to physical network interface 4may be associated with a given user. In addition, external processoroperably connected to a communication system may have a lookup tablecontaining the relationship between network addresses for which anexternal processor provides software switching services through thecommunication system. A lookup table in an external processor operablyconnected to a communication system may contain information regardingthe relationship between network nodes for which an external processorprovides software switching services for the communication system.Further, an external processor operably connected to a communicationsystem may contain a lookup table describing the relationship betweendevices connected to the communication system for which an externalprocessor provides software switching. For example, a telephoneconnected to physical network interface 7 and a telephone connected tophysical network interface 9 might be related in a lookup table. Inaddition, a lookup table in an external processor operably connected tothe communication system may contain the physical to logical associationof devices attached to network interfaces of the communication systemfor which an external processor provides software switching services.For example, the PC connected to network interface 5 and the telephoneconnected to network interface 6 are both at some user's desk. Forinstance, the web cam connected to network interface 7 and located at afirst user's desk may be grouped with a web cam connected to networkinterface 11 and be located at another user's desk for conducting avideo conference. Of course, those skilled in the art will realize thatan external processor may have a lookup table including some combinationof two or more of the above lookup table entries. Further, those skilledin the art will appreciate that these lookup tables may also bemaintained in some processor within a communication system, or in bothan external processor and a processor within the communication system.

For some computer software program embodiments of the present invention,at least one software module executing within an external processor canperform software switching for a communication system to which it isoperably connected. Thereafter, the external processor, such as 343 inFIG. 12, may communicate the results of software switching to theoperably connected communication system for implementation therein. Forexample, the fifth software module or the like executing in an externalprocessor may communicate the results of the software switching decisionfrom an external processor to the communication system. As such, asoftware module executing in an external processor can instruct orcommand the communication system, such as 300 in FIG. 12, to performsoftware switched transmission of data between at least two networkinterfaces within the communication system. Alternatively, a softwaremodule executing in an external processor can instruct or command thecommunication system to perform software switched transmission of datathrough a logical connection established between at least two networkinterfaces within the communication system. Of course, the externalprocessor can instruct the communication system to perform other typesof software switching transfers within the communication system. Forexample, a software switched transmission may occur between an externalinterface and a network interface, between multiple network interfaces,or the like. For other computer software program embodiments of thepresent invention, at least one software module executing within anexternal processor can command the operably connected communicationsystem to perform various types of data transfers between networkinterfaces. For example, such software module can cause a unidirectionaldata transfer from one network interface to at least one other networkinterface to occur within the communication system. For instance, suchsoftware module can cause a bidirectional data transfer from one networkinterface to at least one other network interface to occur within thecommunication system. In addition, other computer program productembodiments provide software modules executing in an external processorthat can provide other functions related to software switching. Forexample, at least one software module executing in an operably connectedexternal processor can determine how many and which network interfacesof the communication system are to receive incoming data received fromthe first network interface of the communication system. For instance,incoming video data from one network interface may be directed to threeother network interfaces to support a videoconference application.

The present invention provides computer software program productembodiments executing in an external processor operably connected to acommunication system. In some software program product embodiments,software switching in the external processor is initiated by data beingreceived at a network interface, external interface, or some otherinterface of the communication system. In essence, the occurrence ofdata being received by a communication system can be communicated to anoperably connected external processor such that it may accordinglyperform software switching for the received data. For other softwareprogram product embodiments, the occurrence of an event associated witha network interface of the communication system may be communicated toan operably connected external processor such that it may accordinglyperform software switching in response to an event at a networkinterface or the like. For example, the event at a network interfacecould represent data being received, a network being initialized, anetwork or link error, or the like occurring at a network interface. Inyet further software program embodiments, the occurrence of an eventassociated with the communication system can be communicated to anoperably connected external processor such that it may accordinglyperform any software switching required in response to an event in thecommunication system. For instance, an event at a communication systemcould be some status, status change, system initialization, systemconfiguration, system configuration change, or error occurring in acommunication system. Events can be similarly communicated from acommunication system to one or more operably connected externalprocessors suitably programmed to respond to a given event.

Events occurring in a communication system, in a network interfacethereof, or in an external interface thereof can represent many things.For instance, an event may represent a network initializing, a networkshutting down, a network link being initialized, or a network linkshutting down. As further examples, a network interface initializing ora network interface shutting down could be an event. Some events arerelated to the status of a device attached to a network interface. Forexample, if a telephone is attached to a network interface, an eventcould represent a phone going off hook, a phone going on hook, anincoming call being received, an incoming call ringing a telephonenumber, an incoming call being received with caller ID information, anincoming call being received without caller ID information, an incomingcall being received with DID (Direct Inward Dial) information, or anincoming call being received without DID (Direct Inward Dial)information. Further, with a telephone attached to a network interface,an incoming call not being answered, an incoming call not being answeredafter a given number of rings, a telephone connected to at least onenetwork interface having keypad activity, a telephone connected to atleast one network interface having keypad activity but having theactivity cease for some period of time, a telephone connected to atleast one network interface having keypad activity and keys strokes werecaptured less than or equal to some key stroke number limit, a telephoneconnected to at least one network interface having keypad activity andkeys strokes were captured beyond some key stroke number limit, or atelephone connected to at least one network interface having keypadactivity and key strokes beyond some key stroke number limit that werecaptured could represent events. Of course, events may be associatedwith other devices attached to a network interface, such as a networknode, a personal computer, a web cam, or the like. An event could alsorepresent a change in status for at least one network interface, or arequest for status being made from an external processor to at least onenetwork interface or other interface of an operably connectedcommunication system.

As those skilled in the art will understand, software switchingperformed by an external processor can be used to manage bandwidth amongvarious external interfaces or network interfaces of an operablyconnected communication system. In some computer software programproduct embodiments, at least one software module executing in anexternal processor can manage differences in bandwidth between theincoming first network interface and at least one other outbound networkinterface of the communication system. Of course, this can be done so asto multiplex or demultiplex bandwidth between the incoming networkinterface and the outbound network interface. For example, the externalprocessor can issue a command to an operably connected communicationsystem so as to cause multiplexing, demultiplexing, or both at networkinterfaces. For instance the external processor can command thecommunication system to send data through an outbound network interfaceat a lower bandwidth than that of the incoming first network interface.Alternatively, the external processor can command the communicationsystem to send data through an outbound network interface at a higherbandwidth than that of the incoming first network interface of thecommunication system. As such, incoming data can be transmitted outthrough an outbound network interface data at a different bandwidth thanthat at which it was received, providing concentrator or inverseconcentrator functions.

Some computer software program product embodiments executing in anexternal processor provide at least one software module therein that cancreate at least one command for an operably connected communicationsystem. These commands may be transmitted by the fifth software moduleor some other software module executing in an external processor to thecommunication system. Accordingly, the communication system can decodeand implement the received command therein. Those skilled in the artwill appreciate that many types of commands may be issued by an externalprocessor to an operably connected communication system. For example,the command could be a command to transmit data from one networkinterface to at least one other network interface, a command to connectat least two network interfaces together, a command to disconnect atleast one network interface from at least one other network interface, acommand to establish a logical connection between at least two networkinterfaces, or a command to de-establish a logical connection between atleast two network interfaces. For instance, a command could direct thecommunication system to take a telephone line off hook. A command coulddirect a communication system to take a telephone line on hook. Acommand could instruct the communication system to connect at least onenetwork interface to voicemail, or a command could be used to disconnectat least one network interface from voicemail. For example, a commandcould direct a communication system to connect at least one networkinterface to system voice, and another command could direct thecommunication system to disconnect at least one network interface fromsystem voice. As used herein, the term “system voice” includes a numberof audible communications that the communication system may have with anend device or end network node connected to a network interface or someother interface of the communication system. The audible communicationscan be in either direction between the communication system and the enddevice or end network node. These audible communications could bedirected by the external processor or can originate from the externalprocessor. Alternatively, these audible communications could beinitiated by the communication system itself. System voice is similar infunctionality to known “voice response unit” functionality. The systemvoice function can use tones, sampled voice, or other sampled audiblesounds for audibly communicating. A command could be used to cause thecommunication system to dial a telephone number, to define a ringpattern for a telephone, to ring a telephone at least once, or to stopringing a telephone. Further, a command received from an externalprocessor could be used to program at least one parameter of an operablyconnected communication system, or to program at least one parameter ofa network interface in a communication system. In addition, a commandcould cause the communication system to initiate at least one outboundsignal from at least one network interface, or could cause acommunication system to cease transmitting at least one outbound signalfrom at least one network interface. Of course it is possible to havemany other commands, and to direct the operation of the communicationsystem with a series of commands received from an external processor.Next, we discuss some computer software program product embodiments ofthe present invention that can execute in at least one processor withina communication system.

The present invention includes embodiments related to the first categoryof computer software program product embodiments. These computer programproduct embodiments are for execution in at least one processor externalto but operably connected to a communication system that exchanges databetween networks through at least two network interfaces, as previouslydisclosed. This embodiment comprises at least five means implemented insoftware for performing various functions and operations. First meansfor determining that a first network interface of the communicationsystem is receiving data from a first network in a first network formatare provided. Further, second means for determining to which of at leastone other network interface of the communication system the datareceived may be switched in support of at least one functionalapplication of the received data are provided. In addition, third meansfor switching the data received from the first network interface to atleast one other network interface of the communication system accordingto at least one selected functional application using software switchingare also included. Yet further, fourth means for creating at leastnetwork interface connection information for the communication systemreflecting the result of the software switching decision between thefirst network interface and at least one other network interface areprovided. Fifth means for transmitting at least the network interfaceconnection information to the communication system to control therein towhich at least one other network interface the first network interfacewill transmit the incoming received data to implement software switchingin accordance with the selected functional application are alsoprovided.

As indicated, the present invention provides a second category ofcomputer software program embodiments stored in computer readable mediafor execution in at least one processor within a communication system.As before, the communication system can exchange data between networksthrough at least two network interfaces, and the communication system isoperably connected to at least one external processor. The secondcategory of computer software program product embodiments execute in aprocessor, such as 328, within a communication system such as 300, asshown in FIG. 12. These software embodiments can interact in acomplimentary manner with the external processor 343 and computersoftware program embodiments executing therein. We return to FIG. 14 fora flow diagram illustrating some computer software program productembodiments for execution in a processor 328 within a communicationsystem that is operably connected to an external processor like 343, forsupporting exchanges of data between networks as described herein. Thecomputer software program embodiment comprises at least four softwaremodules. The software program embodiment provides a first softwaremodule for determining that a first network interface of thecommunication system is receiving data from a first network in a firstnetwork format. This processing by the first software module is shown as500 in FIG. 14. In addition, the computer software program embodimentprovides a second software module for transmitting to at least oneexternal processor through at least one interface of the communicationsystem that the first network interface of the communication system isreceiving data. This processing by the second software module is shownas 510 in FIG. 14. Further, the computer software program embodimentprovides a third software module for receiving from at least oneexternal processor through at least one interface of the communicationsystem the results of the software switching decision as networkinterface connection information. This processing by the third softwaremodule is shown as 520 in FIG. 14. The computer software programembodiment also provides a fourth software module for implementing thesoftware switching decision within the communication system by directingthe data received from the first network interface to at least one othernetwork interface of the communication system as instructed by theprocessor external to the communication system. This processing by thefourth software module is shown as 530 in FIG. 14. The softwareswitching decision is performed by at least one processor external tothe communication system based at least on the transmission from thesecond software module to an external processor. Network interfaceconnection information received by the communication system from anexternal processor indicates to which of at least one other networkinterface of the communication system the data received by the firstnetwork interface will be switched. In one embodiment, the softwareswitching decision is made by at least one external processor such as343 in FIG. 12 according to at least one desired functional applicationof the received data. For example the software switching decision mayconnect network interfaces together to support VoIP, videoconferencing,teleconferencing, or many other functional applications. As such, theseembodiments can implement the results of the software switching decisionmade by an external processor within a communication system.

In a further computer software program product embodiment of the presentinvention, a fifth software module is provided. Note that this fifthsoftware module is optional in some software embodiments, as shown bythe dashed line in FIG. 14. The fifth software module is used forinteracting in various ways with at least one operably connectedexternal processor, such as 343 in FIG. 12. This processing by the fifthsoftware module is shown as 540 in FIG. 14. The fifth software module isused by the communication system for exchanging information with atleast one external processor. Many different types of information may beexchanged between the communication system and an external processor.For example, communication system configuration information, networkinterface configuration information, information about attached networknodes, information about supported network formats, or information aboutattached network formats may be exchanged. For instance, communicationsystem operational information, network interface operationalinformation, network format information for a network interface,physical interface information for a network interface, communicationsystem status information, network interface status information,communication system event information, or network interface eventinformation may also be exchanged between the communication system andat least one operably connected external processor.

As before, an event may represent many things. For instance, an eventcould represent an indication that a network is initializing, that anetwork shutting down, that a link being initialized, or that a linkshutting down. Further, an event may represent that a network interfaceis initializing, that a network interface is shutting down, that a phoneis going off hook, or that a phone is going on hook. For example, anevent may indicate that an incoming call is being received, that anincoming call is ringing a telephone number, that an incoming call isbeing received with caller ID information, that an incoming call isbeing received without caller ID information, that an incoming call isbeing received with DID (Direct Inward Dial) information, or that anincoming call is being received without DID (Direct Inward Dial)information. In addition, an event might represent that an incoming callis not being answered, that an incoming call is not being answered aftera given number of rings, that a telephone is connected to at least onenetwork interface having keypad activity, or that a telephone isconnected to at least one network interface having keypad activity butthat the activity has ceased for some period of time. Further, an eventmight indicate that a telephone connected to at least one networkinterface is having keypad activity, and that key strokes were capturedless than or equal to some key stroke number limit. Alternatively, anevent can represent that a telephone is connected to at least onenetwork interface having keypad activity and that keystrokes werecaptured beyond some keystroke number limit. An event might indicatethat a telephone connected to at least one network interface is havingkeypad activity and having key strokes captured beyond some key strokenumber limit, that a change in status has occurred for at least onenetwork interface. In addition, an event could represent a request forstatus from an external processor to at least one network interface ofthe communication system. Of course many other events are possible.

As mentioned before, computer software program embodiments executingwithin the communication system can interact with more than one externalprocessor, such that at least two external processors similar to 343 inFIG. 12 can provide software switching for the communication system. Thecommunication system can communicate individually with each externalprocessor in a number of ways. For example, an external processor can beidentified according to at least one network interface it switches for acommunication system, or according to at least one network addressassociated with at least one network interface it switches therefore.For instance, an external processor may be identified according to adynamic table lookup associating external processors with networkinterfaces each external processor switches, or according to a dynamictable lookup associating external processors with network addressesassociated with network interfaces each external processor switches. Anexternal processor can be identified according to at least one networkaddress associated with each external processor, according to at leastone network node associated with each external processor providingsoftware switching therefor, or according to at least one deviceattached to a network interface associated with each external processorproviding software switching therefore. In addition, an externalprocessor could be identified by having the communication systembroadcast a transmission to each external processor such that eachprocessor can compare the network interface originating the transmissionto the network interfaces it switches. Also, an external processor couldbe identified by having the communication system broadcast atransmission to each external processor such that each processor cancompare the network address of the transmission to the network addressesit switches. Those skilled in the art will appreciate that the above arenot the only ways through which a communication system can communicateindividually with multiple operably connected external processors.

Further, as described above, each external processor, such as 343 shownin FIG. 12 and the like, that is operably connected to a communicationsystem can maintain a lookup table for interacting with thecommunication system. A lookup table can contain one or more entries, aspreviously described. For example, a lookup table could contain entriesregarding all network interfaces for which an external processorprovides software switching, all network addresses associated with allnetwork interfaces for which an external processor provides softwareswitching, all network nodes associated with all network interfaces forwhich an external processor provides software switching, or all devicesassociated with network interfaces for which an external processorprovides software switching. For instance, a lookup table could containentries regarding the relationship between network interfaces for whichan external processor provides software switching, the physical locationof devices attached to network interfaces for which for which anexternal processor provides software switching, or the user of devicesattached to network interfaces for which an external processor providessoftware switching. A lookup table could contain entries regarding therelationship between network addresses for which an external processorprovides software switching, the relationship between network nodes forwhich an external processor provides software switching, therelationship between devices for which an external processor providessoftware switching, or the physical to logical association of devicesattached to network interfaces for which an external processor providessoftware switching. An external processor can of course also usecombinations of the above lookup table entries, and other entries.

In some computer software program embodiments for execution within atleast one processor in a communication system, at least one softwaremodule therein can implement software switching in the communicationsystem. For instance, a software module can implement a softwareswitched transmission of data between at least two network interfaceswithin the communication system, based upon the results of the softwareswitching decision made at an external processor. Further, a softwaremodule can implement a software switched transmission of data through alogical connection established between at least two network interfaceswithin the communication system, again responsive to the results of theexternal software switching decision transmitted to a communicationsystem. Other computer software program product embodiments implementother details regarding data transfers between network interfaces of acommunication system. For instance, at least one software module thereincan implement a software switched unidirectional data transfer from onenetwork interface to at least one other network interface of thecommunication system. For example, at least one software module thereincan implement a software switched bidirectional data transfer from onenetwork interface to at least one other network interface of thecommunication system. Computer program product embodiments may containtherein at least one software module for implementing how many and whichnetwork interfaces of the communication system are to receive incomingdata from a network interface receiving data, according to the networkinterface connection information received from at least one externalprocessor operably connected to a communication system. Further, asnoted previously, at least one software module in some embodiments canmanage differences in bandwidth between the incoming first networkinterface and at least one other outbound network interface of thecommunication system. For example, a software module executing within acommunication system can manage bandwidth by sending data through anoutbound network interface at a lower bandwidth than that of theincoming first network interface. For instance, a software moduleexecuting within a communication system can manage bandwidth by sendingdata through an outbound network interface at a higher bandwidth thanthat of the incoming first network interface of the communicationsystem.

Computer software program embodiments executing in a processor within acommunication system interact with an external processor to implementoperations within the communication system. Accordingly, at least onesoftware module within a communication system can interpret andimplement a command for the communication system received from at leastone external processor operably connected thereto. As discussed before,a software embodiment executing within a communication system caninterpret and implement many commands from an external processor. Forexample, software within a communication system can interpret andimplement a command to transmit data from one network interface to atleast one other network interface, a command to connect at least twonetwork interfaces together, a command to disconnect at least onenetwork interface from at least one other network interface, or acommand to establish a logical connection between at least two networkinterfaces, a command to de-establish a logical connection between atleast two network interfaces. Further, a command to setup a datatransfer between network interfaces, a command to initiate a datatransfer between network interfaces, a command to take a telephone lineoff hook, or a command to take a telephone line on hook could bereceived and implemented by a communication system. Further, softwarewithin a communication system can implement a command to connect atleast one network interface to voicemail, a command to disconnect atleast one network interface from voicemail, a command to connect atleast one network interface to system voice, or a command to disconnectat least one network interface from system voice. In addition, softwarewithin a communication system can implement a command to dial atelephone number, a command to define a ring pattern for a telephone, acommand to ring a telephone at least once, or a command to stop ringinga telephone. For example, software within a communication system canimplement a command to program at least one parameter of a communicationsystem, a command to program at least one parameter of a networkinterface in a communication system, a command to have the communicationsystem initiate at least one outbound signal from at least one networkinterface, a command to have the communication system cease transmittingat least one outbound signal from at least one network interface, or thelike. It is understood that many other commands could be interpreted andimplemented by software executing within a communication system.

In some computer software program embodiments executing in acommunication system, additional software modules may be provided. Forexample, a software module such as a sixth software module forinitiating the physical transfer through the communication system of thedata received from the first network interface to at least one othernetwork interface of the communication system may be provided. Note thatthis sixth software module is optional in some software embodiments, asshown by the dashed line in FIG. 14. This processing by the sixthsoftware module is shown as 550 in FIG. 14. Further, one or moreprocessors in a communication system may execute one or more softwaremodules from given embodiments. A processor executing at least onesoftware module therein may be disposed centrally within a communicationsystem so as to serve multiple network interfaces. In addition, aprocessor within the communication system executing at least onesoftware module therein can be disposed in a first network interfacereceiving data, in a second network interface transmitting data, or inat least one other network interface of the communication system. Assuch, the operation of a communication system may be supported by atleast one processor executing a suitable computer software programproduct embodiment therein.

The present invention provides some embodiments related to the secondcategory of computer software program product embodiments. Theseembodiments are also intended for execution in at least one processorwithin a communication system used for exchanging data between networksthrough at least two network interfaces. Further, the communicationsystem is operably connected to at least one external processor asbefore. These embodiments comprise several means for performing varioussoftware functions. First means for determining that a first networkinterface of the communication system is receiving data from a firstnetwork in a first network format are provided. Also, second means fortransmitting to at least one external processor through at least oneinterface of the communication system that the first network interfaceof the communication system is receiving data are included. The softwareswitching decision may be performed by at least one processor externalto the communication system based at least on the transmission from thefirst means for transmitting. In addition, third means for receivingfrom at least one external processor through at least one interface ofthe communication system the results of the software switching decisionas network interface connection information are provided. The networkinterface connection information received indicates to which of at leastone other network interface of the communication system the datareceived by the first network interface will be switched. Further, alsoprovided are fourth means for implementing the software switchingdecision within the communication system by directing the data receivedfrom the first network interface to at least one other network interfaceof the communication system as instructed by the processor external tothe communication system.

The present invention provides a third category of computer softwareprogram product embodiments for execution by at least one processor,such as 328, within a communication system such as 300 as shown in FIG.12 and the other Figures. These software embodiments can interact in acomplimentary manner with the external processor 343 and computersoftware program embodiments executing therein, as well as with othercomputer software program embodiments executing in a processor 328 ofthe communication system. We refer to FIG. 15 for a flow diagramillustrating some computer software program product embodiments forexecution in a processor within a communication system that is operablyconnected to an external processor, for supporting exchanges of databetween networks as described herein. In any case, the communicationsystem 300 is as before, exchanging data between networks through atleast two network interfaces, and is operably connected to at least oneexternal processor such as 328. One or more external processors like 343may perform software switching services for the communication system asdiscussed. At least four software modules are provided by the computersoftware program embodiment. A first software module is provided fordetermining that a first network interface of the communication systemis receiving data from a first network in a first network format. Thisprocessing by the first software module is shown as 600 in FIG. 15.Further, a second software module for identifying the first networkformat of incoming data received from the first network interface isprovided. This processing by the second software module is shown as 610in FIG. 15. In addition, a third software module is provided forreceiving from at least one external processor through at least oneinterface of the communication system an indication that the receiveddata is to be transmitted to at least one other outbound networkinterface of the communication system. This processing by the thirdsoftware module is shown as 620 in FIG. 15. A fourth software module fortranslating the received data from the first network format into adifferent format suitable for software switched transmission of thereceived data from the first network interface directly to at least oneother outbound network interface of the communication system isprovided. This processing by the fourth software module is shown as 630in FIG. 15. At least the fourth software module is responsive to theresults of the software switching decision received from at least oneexternal processor operably connected to the communication system. Assuch, this embodiment supports format translations between networkformats and a different format used for exchanging data between networkor other interfaces of a communication system. Readers should refer tothe earlier detailed discussions regarding format translations of data.For example, translations may involve the incoming network format, theoutbound network format, or both. In addition, translations may involvethe aforementioned third format, the common format, the transparentformat, an encapsulated format, or the like. For example, the differentformat suitable for software switched transmission of received databetween network interfaces may comprise received data in an encapsulatedhardware format, received data in an encapsulated PCI bus format,received data in an IP packet in an encapsulated hardware format,received data in an IP packet in an encapsulated PCI bus format,received data in an encapsulated software format, or received data inthe incoming network format encapsulated for transmission betweennetwork interfaces.

As noted, a first network interface of the communication system receivesdata from a first network in a first network format. At least onesoftware module in these most recent software embodiments identifies atleast one other network interface to receive the received data by usingnetwork interface connection information received from at least oneexternal processor through at least one of the interfaces of thecommunication system. The network interface connection information canbe created and transmitted by at least one processor external to thecommunication system to indicate that at least two network interfacesare to exchange data therebetween. Also, the network interfaceconnection information may be created by at least one processor externalto the communication system making software switching decisions for thecommunication system to thereby control which at least two networkinterfaces are to exchange data therebetween.

For some additional software embodiments, a fifth software module isalso provided. Note that this fifth software module is optional in somesoftware embodiments, as shown by the dashed line in FIG. 15. The fifthsoftware module is used for translating received data in the differentformat suitable for software switched transmission into an outboundnetwork format suitable for transmission from at least one other networkinterface of the communication system to some outbound network. Thisprocessing by the fifth software module is shown as 640 in FIG. 15. Assuch, the fifth software module can provide an inverse translation fromthe different format into the network format for the outbound network towhich the formerly received data is to be transmitted. Readers shouldrefer to the earlier detailed discussion on inverse format translations.The different format suitable for software switched transmission is asdescribed previously. The incoming and outbound network formats could bethe same, or alternatively the incoming network format and the outboundnetwork format might be different formats. When the incoming andoutbound network formats are different, the translation of data receivedfrom the first network interface in the first format into the differentformat suitable for software switched transmission and the subsequenttranslation of data received from the different format suitable forsoftware switched transmission into the outbound network format are usedto reconcile differences between the first and outbound network formatssuch that data may be exchanged between different network formatsthrough the communication system. In some cases, the first networkconnected to the first network interface and the second networkconnected to the outbound network interface have different network layermodels that can be reconciled through format translations performed by acomputer software program product embodiment of the communicationsystem. Accordingly, these embodiments support efficient and transparentexchanges of data through network interfaces attached to differentnetworks.

Embodiments related to the aforementioned third category of computersoftware program product embodiments are also provided. These computerprogram product embodiments are for execution in at least one processorwithin a communication system for exchanging data between networksthrough at least two network interfaces, wherein the communicationsystem is operably connected to at least one external processor asbefore. These embodiments comprise at least four means for performingvarious functions using software. As such, first means for determiningthat a first network interface of the communication system is receivingdata from a first network in a first network format are provided. Secondmeans for identifying the first network format of incoming data receivedfrom the first network interface are included. Further, third means forreceiving from at least one external processor through at least oneinterface of the communication system an indication that the receiveddata is to be transmitted to at least one other outbound networkinterface of the communication system are provided. In addition, fourthmeans for translating the received data from the first network formatinto different format suitable for software switched transmission of thereceived data from the first network interface directly to at least oneother outbound network interface of the communication system are alsoprovided. At least the fourth means for translating is responsive to theresults of the software switching decision received from at least oneexternal processor.

Many modifications and other embodiments of the present invention willcome to mind to one skilled in the art having the benefit of theteachings presented in the foregoing descriptions and related figures.Therefore, it is to be understood that the invention is not to belimited to specific embodiments disclosed and that modifications andother embodiments are intended to be included within the scope of theappended claims. Those skilled in the art will appreciate that variousfeatures and aspects of the above disclosed embodiments might becombined to create a number of other related embodiments still withinthe scope of the present invention. As noted, the above writtendescription is meant to disclose and fully describe the presentinvention, and is not meant to limit or narrow the present invention asdefined by the following claims. Although specific terms are employedherein, they are used in a generic and descriptive sense only and tolimit the scope of the present invention in any way.

1. A computer program product stored in computer readable media forexecution in at least one processor external to but operably connectedto a communication system that exchanges data between networks throughat least two network interfaces, comprising: a first software module fordetermining that a first network interface of the communication systemis receiving data from a first network in a first network format; asecond software module for determining to which of at least one othernetwork interface of the communication system the data received may beswitched in support of at least one functional application of thereceived data; a third software module for software switching the datareceived from the first network interface to at least one other networkinterface of the communication system according to at least one selectedfunctional application; a fourth software module for creating at leastnetwork interface connection information for the communication systemreflecting the result of the software switching decision between thefirst network interface and at least one other network interface; and afifth software module for transmitting at least the network interfaceconnection information to the communication system to control therein towhich at least one other network interface the first network interfacewill transmit the incoming received data to implement software switchingin accordance with the selected functional application.
 2. The computerprogram product of claim 1, further comprising a sixth software modulefor receiving configuration information from the operably connectedcommunication system wherein the configuration information consists ofat least one of which network interfaces are present in thecommunication system, which network interfaces are configured in thecommunication system, which network interfaces are active in thecommunication system, what type of networks are connected to networkinterfaces of the communication system, what types of network formatsare supported by network interfaces, what types of network formats arein use in network interfaces of the communication system, what type ofphysical interface is currently in use in network interfaces of thecommunication system, the bandwidth of network interfaces in thecommunication system, the status of at least one network interface inthe communication system, an event from at least one network interfacein the communication system, what network nodes are connected to eachnetwork interface of a communication system, the status of at least onedevice connected to the corresponding network interfaces of thecommunication system, and the status of at least one network nodeconnected to the corresponding network interfaces of the communicationsystem.
 3. The computer program product of claim 2, wherein theconfiguration information received by the computer program product isone of configuration information solicited after power up but beforecompletion of initializing the communication system, unsolicitedconfiguration information after power up but before completion ofinitializing the communication system, configuration informationsolicited after the communication system is completely initialized,unsolicited configuration information after the communication system iscompletely initialized, configuration information solicited after thecommunication system is communicating with at least one attachednetwork, and unsolicited configuration information after thecommunication system is communicating with at least one attachednetwork.
 4. The computer program product of claim 1, wherein thecomputer program product can control software switching in thecommunication system through execution in at least one processorselected from the group consisting of a single external processoroperably connected to the communication system operating as a singlesoftware switching resource for the communication system, at least twoexternal processors operably connected to the communication systemconfigured to operate as a single redundant software switching resourcefor the communication system, at least two external processors operablyconnected to the communication system configured to share softwareswitching functions therebetween for the communication system, at leasttwo external processors operably connected to the communication systemconfigured to split software switching functions therebetween for thecommunication system based on at least two functional applications, atleast two external processors operably connected to the communicationsystem configured to split software switching functions therebetween forthe communication system based on relative processor workloads, and atleast two external processors operably connected to the communicationsystem configured to split software switching functions therebetween forthe communication system based on the network interfaces supported byeach external processor.
 5. The computer program product of claim 4,wherein at least two external processors provide software switching forthe communication system, and wherein the communication systemcommunicates individually with each external processor by at least oneway of identifying selected from the group consisting of identifying anexternal processor according to at least one network interface itswitches, identifying an external processor according to at least onenetwork address associated with at least one network interface eachprocessor switches, identifying an external processor according to adynamic table lookup associating external processors with networkinterfaces each external processor switches, identifying an externalprocessor according to a dynamic table lookup associating externalprocessors with network addresses associated with network interfaceseach external processor switches, identifying at least one networkaddress associated with each external processor, identifying at leastone network node associated with each external processor providingsoftware switching therefor, identifying at least one device attached toa network interface associated with each external processor providingsoftware switching therefor, the communication system broadcasting atransmission to each external processor such that each processor cancompare the network interface originating the transmission to thenetwork interfaces each external processor switches, and thecommunication system broadcasting a transmission to each externalprocessor such that each processor can compare the network address ofthe transmission to the network addresses each network processorswitches.
 6. The computer program product of claim 1, wherein eachexternal processor operably connected to the communication systemmaintains a lookup table containing at least one entry from the groupconsisting of all network interfaces for which an external processorprovides software switching, all network addresses associated with allnetwork interfaces for which an external processor provides softwareswitching, all network nodes associated with all network interfaces forwhich an external processor provides software switching, all devicesassociated with network interfaces for which an external processorprovides software switching, the relationship between network interfacesfor which an external processor provides software switching, thephysical location of devices attached to network interfaces for which anexternal processor provides software switching, the user of devicesattached to network interfaces for which an external processor providessoftware switching, the relationship between network addresses for whichan external processor provides software switching, the relationshipbetween network nodes for which an external processor provides softwareswitching, the relationship between devices for which an externalprocessor provides software switching, the physical to logicalassociation of devices attached to network interfaces for which anexternal processor provides software switching, the status of at leastone device connected to the corresponding network interfaces of thecommunication system, the status of at least one network node connectedto the corresponding network interfaces of the communication system, andcombinations of at least two of the above lookup table entriesassociated with an external processor providing software switchingtherefor.
 7. The computer program product of claim 1, wherein at leastone software module therein can perform software switching for thecommunication system selected from the group consisting of a softwareswitched transmission of data between at least two network interfaceswithin the communication system and a software switched transmission ofdata through a logical connection established between at least twonetwork interfaces within the communication system, to be transmitted bythe fifth software module to the communication system for softwareswitching implementation therein.
 8. The computer program product ofclaim 1, wherein at least one software module therein creates a softwareswitched transfer in the communication system selected from the groupconsisting of a unidirectional data transfer from one network interfaceto at least one other network interface of the communication system anda bidirectional data transfer from one network interface to at least oneother network interface of the communication system.
 9. The computerprogram product of claim 1, wherein at least one software module thereindetermines how many and which network interfaces of the communicationsystem are to receive incoming data received from the first networkinterface.
 10. The computer program product of claim 1, wherein softwareswitching is initiated by at least one of data being received at anetwork interface of the communication system, the occurrence of anevent associated with a network interface of the communication system,and the occurrence of an event associated with the communication system.11. The computer program product of claim 10, wherein the eventcomprises at least one of a network initializing, a network shuttingdown, a network link being initialized, a network link shutting down, anetwork interface initializing, a network interface shutting down, aphone going off hook, a phone going on hook, an incoming call beingreceived, an incoming call ringing a telephone number, an incoming callbeing received with caller ID information, an incoming call beingreceived without caller ID information, an incoming call being receivedwith DID (Direct Inward Dial) information, an incoming call beingreceived without DID (Direct Inward Dial) information, an incoming callnot being answered, an incoming call not being answered after a givennumber of rings, a telephone connected to at least one network interfacehaving keypad activity, a telephone connected to at least one networkinterface having keypad activity but the activity has ceased for someperiod of time, a telephone connected to at least one network interfacehaving keypad activity and keys strokes were captured less than or equalto some key stroke number limit, a telephone connected to at least onenetwork interface having keypad activity and keys strokes were capturedbeyond some key stroke number limit, a telephone connected to at leastone network interface having keypad activity and key strokes beyond somekey stroke number limit that were captured, a change in status for atleast one network interface, and a request for status from an externalprocessor to at least one network interface.
 12. The computer programproduct of claim 1, wherein at least one software module therein canmanage differences in bandwidth between the incoming first networkinterface and at least one other outbound network interface of thecommunication system by issuing a command thereto consisting of at leastone of commanding the communication system to send data through anoutbound network interface at a lower bandwidth than that of theincoming first network interface and commanding the communication systemto send data through an outbound network interface at a higher bandwidththan that of the incoming first network interface of the communicationsystem.
 13. The computer program product of claim 1, wherein at leastone software module therein creates a command for the communicationsystem that is transmitted by the fifth software module to thecommunication system for implementation of the command therein.
 14. Thecomputer program product of claim 13, wherein the command consists of atleast one command from the group consisting of a command to transmitdata from one network interface to at least one other network interface,a command to connect at least two network interfaces together, a commandto disconnect at least one network interface from at least one othernetwork interface, a command to establish a logical connection betweenat least two network interfaces, a command to de-establish a logicalconnection between at least two network interfaces, a command to take atelephone line off hook, a command to take a telephone line on hook, acommand to connect at least one network interface to voicemail, acommand to disconnect at least one network interface from voicemail, acommand to connect at least one network interface to system voice, acommand to disconnect at least one network interface from system voice,a command to dial a telephone number, a command to define a ring patternfor a telephone, a command to ring a telephone at least once, a commandto stop ringing a telephone, a command to program at least one parameterof a communication system, a command to program at least one parameterof a network interface in a communication system, a command to have thecommunication system initiate at least one outbound signal from at leastone network interface, and a command to have the communication systemcease transmitting at least one outbound signal from at least onenetwork interface.
 15. A computer program product stored in computerreadable media for execution in at least one processor within acommunication system for exchanging data between networks through atleast two network interfaces, wherein the communication system isoperably connected to at least one external processor, comprising: afirst software module for determining that a first network interface ofthe communication system is receiving data from a first network in afirst network format; a second software module for transmitting to atleast one external processor through at least one interface of thecommunication system that the first network interface of thecommunication system is receiving data; wherein the software switchingdecision is performed by at least one processor external to thecommunication system based at least on the transmission from the secondsoftware module; a third software module for receiving from at least oneexternal processor through at least one interface of the communicationsystem the results of the software switching decision as networkinterface connection information; wherein the network interfaceconnection information received indicates to which of at least one othernetwork interface of the communication system the data received by thefirst network interface will be switched; and a fourth software modulefor implementing the software switching decision within thecommunication system by directing the data received from the firstnetwork interface to at least one other network interface of thecommunication system as instructed by the processor external to thecommunication system.
 16. The computer program product of claim 15,wherein the software switching decision is made by at least one externalprocessor according to at least one desired functional application ofthe received data.
 17. The computer program product of claim 15, furthercomprising a fifth software module for exchanging with at least oneexternal processor information selected from the group consisting ofcommunication system configuration information, network interfaceconfiguration information, information about attached network nodes,information about supported network formats, information about attachednetwork formats, communication system operational information, networkinterface operational information, network format information for anetwork interface, physical interface information for a networkinterface, communication system status information, network interfacestatus information, communication system event information, the statusof at least one device connected to the corresponding network interfacesof the communication system, the status of at least one network nodeconnected to the corresponding network interfaces of the communicationsystem, and network interface event information.
 18. The computerprogram product of claim 17, wherein the event comprises at least one ofa network initializing, a network shutting down, a link beinginitialized, a link shutting down, a network interface initializing, anetwork interface shutting down, a phone going off hook, a phone goingon hook, an incoming call being received, an incoming call ringing atelephone number, an incoming call being received with caller IDinformation, an incoming call being received without caller IDinformation, an incoming call being received with DID (Direct InwardDial) information, an incoming call being received without DID (DirectInward Dial) information, an incoming call not being answered, anincoming call not being answered after a given number of rings, atelephone connected to at least one network interface having keypadactivity, a telephone connected to at least one network interface havingkeypad activity but the activity has ceased for some period of time, atelephone connected to at least one network interface having keypadactivity and keys strokes were captured less than or equal to some keystroke number limit, a telephone connected to at least one networkinterface having keypad activity and keys strokes were captured beyondsome key stroke number limit, a telephone connected to at least onenetwork interface having keypad activity and key strokes beyond some keystroke number limit that were captured, a change in status for at leastone network interface, and a request for status from an externalprocessor to at least one network interface.
 19. The computer programproduct of claim 15, wherein at least one software module therein canimplement software switching in the communication system selected fromthe group consisting of a software switched transmission of data betweenat least two network interfaces within the communication system and asoftware switched transmission of data through a logical connectionestablished between at least two network interfaces within thecommunication system.
 20. The computer program product of claim 15,wherein at least two external processors provide software switching forthe communication system, and wherein the communication systemcommunicates individually with each external processor by at least oneway of identifying selected from the group consisting of identifying anexternal processor according to at least one network interface itswitches, identifying an external processor according to at least onenetwork address associated with at least one network interface eachprocessor switches, identifying an external processor according to adynamic table lookup associating external processors with networkinterfaces each external processor switches, identifying an externalprocessor according to a dynamic table lookup associating externalprocessors with network addresses associated with network interfaceseach external processor switches, identifying at least one networkaddress associated with each external processor, identifying at leastone network node associated with each external processor providingsoftware switching therefor, identifying at least one device attached toa network interface associated with each external processor providingsoftware switching therefor, the communication system broadcasting atransmission to each external processor such that each processor cancompare the network interface originating the transmission to thenetwork interfaces each external processor switches, and thecommunication system broadcasting a transmission to each externalprocessor such that each processor can compare the network address ofthe transmission to the network addresses each network processorswitches.
 21. The computer program product of claim 15, wherein eachexternal processor operably connected to the communication systemmaintains a lookup table containing at least one entry from the groupconsisting of all network interfaces for which an external processorprovides software switching, all network addresses associated with allnetwork interfaces for which an external processor provides softwareswitching, all network nodes associated with all network interfaces forwhich an external processor provides software switching, all devicesassociated with network interfaces for which an external processorprovides software switching, the relationship between network interfacesfor which an external processor provides software switching, thephysical location of devices attached to network interfaces for whichfor which an external processor provides software switching, the user ofdevices attached to network interfaces for which an external processorprovides software switching, the relationship between network addressesfor which an external processor provides software switching, therelationship between network nodes for which an external processorprovides software switching, the relationship between devices for whichan external processor provides software switching, the physical tological association of devices attached to network interfaces for whichan external processor provides software switching, the status of atleast one device connected to the corresponding network interfaces ofthe communication system, the status of at least one network nodeconnected to the corresponding network interfaces of the communicationsystem, and combinations of at least two of the above lookup tableentries associated with an external processor providing softwareswitching therefor.
 22. The computer program product of claim 15,wherein at least one software module therein implements a softwareswitched transfer in the communication system selected from the groupconsisting of a unidirectional data transfer from one network interfaceto at least one other network interface of the communication system anda bidirectional data transfer from one network interface to at least oneother network interface of the communication system.
 23. The computerprogram product of claim 15, wherein at least one software moduletherein implements how many and which network interfaces of thecommunication system are to receive incoming data from the first networkinterface according to the network interface connection informationreceived from at least one external processor.
 24. The computer programproduct of claim 15, wherein at least one software module therein canmanage differences in bandwidth between the incoming first networkinterface and at least one other outbound network interface of thecommunication system by at least one of by sending data through anoutbound network interface at a lower bandwidth than that of theincoming first network interface and by sending data through an outboundnetwork interface at a higher bandwidth than that of the incoming firstnetwork interface of the communication system.
 25. The computer programproduct of claim 15, wherein at least one software module thereininterprets and implements a command for the communication systemreceived from at least one external processor operably connectedthereto.
 26. The computer program product of claim 25, wherein thecommand consists of at least one command from the group consisting of acommand to transmit data from one network interface to at least oneother network interface, a command to connect at least two networkinterfaces together, a command to disconnect at least one networkinterface from at least one other network interface, a command toestablish a logical connection between at least two network interfaces,a command to de-establish a logical connection between at least twonetwork interfaces, a command to setup a data transfer between networkinterfaces, a command to initiate a data transfer between networkinterfaces, a command to take a telephone line off hook, a command totake a telephone line on hook, a command to connect at least one networkinterface to voicemail, a command to disconnect at least one networkinterface from voicemail, a command to connect at least one networkinterface to system voice, a command to disconnect at least one networkinterface from system voice, a command to dial a telephone number, acommand to define a ring pattern for a telephone, a command to ring atelephone at least once, a command to stop ringing a telephone, acommand to program at least one parameter of a communication system, acommand to program at least one parameter of a network interface in acommunication system, a command to have the communication systeminitiate at least one outbound signal from at least one networkinterface, and a command to have the communication system ceasetransmitting at least one outbound signal from at least one networkinterface.
 27. The computer program product of claim 15, furthercomprising a sixth software module for initiating the physical transferthrough the communication system of the data received from the firstnetwork interface to at least one other network interface of thecommunication system.
 28. The computer program product of claim 15,wherein the processor within the communication system executing at leastone software module therein is disposed in at least one of the firstnetwork interface and at least one other network interface of thecommunication system.
 29. A computer program product stored in computerreadable media for execution in at least one processor within acommunication system for exchanging data between networks through atleast two network interfaces, wherein the communication system isoperably connected to at least one external processor, comprising: afirst software module for determining that a first network interface ofthe communication system is receiving data from a first network in afirst network format; a second software module for identifying the firstnetwork format of incoming data received from the first networkinterface; a third software module for receiving from at least oneexternal processor through at least one interface of the communicationsystem an indication that the received data is to be transmitted to atleast one other outbound network interface of the communication system;a fourth software module for translating the received data from thefirst network format into a different format suitable for softwareswitched transmission of the received data from the first networkinterface directly to at least one other outbound network interface ofthe communication system; and wherein at least the fourth softwaremodule is responsive to the results of the software switching decisionreceived from at least one external processor.
 30. The computer programproduct of claim 29, wherein the different format suitable for softwareswitched transmission of received data between network interfacesconsists of at least one of received data in an encapsulated hardwareformat, received data in an encapsulated PCI bus format, received datain an IP packet in an encapsulated hardware format, received data in anIP packet in an encapsulated PCI bus format, received data in anencapsulated software format, and received data in the incoming networkformat encapsulated for transmission between network interfaces.
 31. Thecomputer program product of claim 29, wherein at least one softwaremodule identifies at least one other network interface to receive thereceived data by using network interface connection information receivedfrom at least one external processor through at least one of theinterfaces of the communication system.
 32. The computer program productof claim 31, wherein the network interface connection information iscreated and transmitted by at least one processor external to thecommunication system to indicate that at least two network interfacesare to exchange data therebetween.
 33. The computer program product ofclaim 32, wherein the network interface connection information iscreated by at least one processor external to the communication systemmaking software switching decisions for the communication system tocontrol which at least two network interfaces are to exchange datatherebetween.
 34. The computer program product of claim 29, furthercomprising a fifth software module for translating received data in thedifferent format suitable for software switched transmission into anoutbound network format suitable for transmission from at least oneother network interface of the communication system.
 35. The computerprogram product of claim 34, wherein the different format suitable forsoftware switched transmission being translated into an outbound networkformat consists of at least one of received data in an encapsulatedhardware format, received data in an encapsulated PCI bus format,received data in an IP packet in an encapsulated hardware format,received data in an IP packet in an encapsulated PCI bus format,received data in an encapsulated software format, and received data inthe incoming network format encapsulated for transmission betweennetwork interfaces.
 36. The computer program product of claim 34,wherein the network format of data received from the first networkinterface and the outbound network format are different.
 37. Thecomputer program product of claim 36, wherein the translation of datareceived from the first network interface in the first format into thedifferent format suitable for software switched transmission and thetranslation of data received from the different format suitable forsoftware switched transmission into the outbound network format are usedto reconcile differences between the first and outbound network formatssuch that data may be exchanged between different network formats. 38.The computer program product of claim 36, wherein the first networkconnected to the first network interface and the second networkconnected to the outbound network interface have different network layermodels that are reconciled through format translations performed by thecomputer program product of the communication system.
 39. A computerprogram product stored in computer readable media for execution in atleast one processor external to but operably connected to acommunication system that exchanges data between networks through atleast two network interfaces, comprising: first means for determiningthat a first network interface of the communication system is receivingdata from a first network in a first network format; second means fordetermining to which of at least one other network interface of thecommunication system the data received may be switched in support of atleast one functional application of the received data; third means forswitching the data received from the first network interface to at leastone other network interface of the communication system according to atleast one selected functional application using software switching;fourth means for creating at least network interface connectioninformation for the communication system reflecting the result of thesoftware switching decision between the first network interface and atleast one other network interface; and fifth means for transmitting atleast the network interface connection information to the communicationsystem to control therein to which at least one other network interfacethe first network interface will transmit the incoming received data toimplement software switching in accordance with the selected functionalapplication.
 40. A computer program product stored in computer readablemedia for execution in at least one processor within a communicationsystem for exchanging data between networks through at least two networkinterfaces, wherein the communication system is operably connected to atleast one external processor, comprising: first means for determiningthat a first network interface of the communication system is receivingdata from a first network in a first network format; second means fortransmitting to at least one external processor through at least oneinterface of the communication system that the first network interfaceof the communication system is receiving data; wherein the softwareswitching decision is performed by at least one processor external tothe communication system based at least on the transmission from thefirst means for transmitting; third means for receiving from at leastone external processor through at least one interface of thecommunication system the results of the software switching decision asnetwork interface connection information; wherein the network interfaceconnection information received indicates to which of at least one othernetwork interface of the communication system the data received by thefirst network interface will be switched; and fourth means forimplementing the software switching decision within the communicationsystem by directing the data received from the first network interfaceto at least one other network interface of the communication system asinstructed by the processor external to the communication system.
 41. Acomputer program product stored in computer readable media for executionin at least one processor within a communication system for exchangingdata between networks through at least two network interfaces, whereinthe communication system is operably connected to at least one externalprocessor, comprising: first means for determining that a first networkinterface of the communication system is receiving data from a firstnetwork in a first network format; second means for identifying thefirst network format of incoming data received from the first networkinterface; third means for receiving from at least one externalprocessor through at least one interface of the communication system anindication that the received data is to be transmitted to at least oneother outbound network interface of the communication system; fourthmeans for translating the received data from the first network formatinto different format suitable for software switched transmission of thereceived data from the first network interface directly to at least oneother outbound network interface of the communication system; andwherein at least the fourth means for translating is responsive to theresults of the software switching decision received from at least oneexternal processor.